Docker、Dockerfile基本使用

本文详细介绍了如何在Linux上安装Docker,包括添加仓库、安装特定版本、配置、启动与停止,以及基本操作如登录、搜索、镜像管理、容器操作和镜像制作。还涵盖了MySQL容器化、Dockerfile示例和常用命令演示。

基本命令

Linux安装docker

yum install -y yum-utils
yum-config-manager \\
    --add-repo \\
    <https://download.docker.com/linux/centos/docker-ce.repo>

# 安装最新的docker
yum install docker-ce docker-ce-cli containerd.io

# 安装指定版本
yum list docker-ce --showduplicates | sort -r
sudo yum install docker-ce-3:20.10.8-3.el8 docker-ce-cli-3:20.10.8-3.el8 containerd.io

# 启动 Docker
systemctl start docker

# Job for docker.service failed because the control process exited with error code
vi /etc/sysconfig/docker 
--selinux-enabled=false 
:wq
systemctl start docker

# 卸载docker
yum remove docker-ce docker-ce-cli containerd.io

# 主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

登录/退出

docker login -u 用户名 -p 密码
docker logout

搜索

docker search XXXXX 
  • Error response from daemon: Unexpected status code 401
    • 退出登录解决问题

安装mysql

docker pull mysql:8.0.27

查看本地镜像

docker images

查看本地容器

docker ps: # 查看当前运行的容器
docker ps -a:# 查看所有容器,包括停止的。
docker restart e24af14cfce6 # 重启容器

进入容器

# docker ps查询容器ID再进入指定的容器
docker exec -i -t 19746bd4a7d4 bash

删除镜像/容器

# 删除多个镜像
docker rmi <your-image-id> <your-image-id>
# 删除所有镜像
docker rmi $(docker images -q)

# 停止容器
docker stop e3f616090589
# 删除容器(只能删除停止的容器)
docker rm e3f616090589
# 停止所有容器运行
docker stop $(docker ps -a -q)
# 删除所有停止运行的容器
docker rm $(docker ps -a -q)

启动mysql容器

# 创建mysql容器
docker run --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:8.0.27
# 创建mysql容器的同时,把mysql的配置文件映射到本地(防止容器崩坏之后数据丢失)
docker run --name mysql-office -p 3306:3306 -v /root/ReMirror/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=a123456 -d mysql:8.0.27

  • name : mysql镜像运行容器名称
  • d : 守护进程方式运行镜像
  • e : 镜像系统变量设置,如上面例子MYSQL_ROOT_PASSWORD 设置MySQL root密码 ,详情变量可以查看镜像说明。
  • tag(8.0.27): 指定运行image标签,不写默认就运行laster,像MySQL这类镜像tag 多为版本号,支持多个版本MySQL运行。

进入容器

docker exec -it mysql-test bash

在mysql-test容器里查看配置文件

cd /etc/mysql

在mysql-test容器里登录mysql

mysql -u root -p

在mysql-test容器里数据库创建develop

# ;代表结束当前sql开始执行
CREATE USER 'develop' IDENTIFIED WITH mysql_native_password BY 'a123456';
GRANT ALL PRIVILEGES ON *.* TO 'develop';

连接数据库

  • 本地启动Navicat Premium
  • localhost:3306

配置文件保存到本地

docker cp mysql-test:/var/lib/mysql/ "$PWD"

将本地文件同步到容器

docker ps -a
# CONTAINER ID

docker inspect -f '{{.ID}}' CONTAINER ID
# tomcat-container-id

docker cp "${PWD}/mysql" tomcat-container-id:/var/lib/mysql/

将已完成的容器打包成镜像

$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

options选项:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

# 查询容器id
docker ps -a # 查询CONTAINER ID
# 打包成镜像
docker commit 8edb74bdc0c4 mysqlmirrortest:1.0.0
# 启动镜像
docker run --name mysqlmirror -p 3306:3306 mysqlmirrortest:1.0.0

# 镜像打包生成tar
docker save -o mysqlmirrortest.tar mysqlmirrortest:1.0.0
# 导入镜像
docker load --input mysqlmirrortest.tar
# 启动镜像
docker run --name mysqlmirror -p 3306:3306 -d mysqlmirrortest:1.0.0

通过Dockerfile创建nginx镜像

# Dockerfile文件内容
# .代表在dockerfile所在的文件夹的路径
FROM nginx:1.20.1

MAINTAINER remirror0815

# 修改nginx的html和conf内容
COPY ./html /usr/share/nginx/html
COPY ./html/nginx/nginx.conf /etc/nginx/nginx.conf

EXPOSE 80
# 打包出了一个nginx_dockerfile:1.0.0的镜像
docker build -t nginx_dockerfile:1.0.0 .
# 启动nginx_dockerfile镜像
docker run --name web-file -p 8080:8080 -p 8082:8082  -d nginx_dockerfile:1.0.0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值