1.安装docker
# 1、yum包更新到最新
yum update
# 2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是 devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、安装 docker,出现输入的界面都按y
yum install -y docker-ce
# 5、查看 docker版本,验证是否验证成功
docker -v
# 6.配置镜像加速器
# 阿里云官网-登录-控制台-搜索‘容器镜像服务’-镜像加速器-复制相关代码执行即可(生成配置文件路径:/etc/docker/daemon.json)
2.docker服务相关命令
# 1.启动docker
systemctl start docker
# 2.停止docker
systemctl stop docker
# 3.重启docker
systemctl restart docker
# 4.查看docker装状态
systemctl status docker
# 5.开机启动docker
systemctl enable docker
3.docker镜像相关命令
# 1.查看镜像
docker images
docker images -q #查看所有镜像的ID
# 2.搜索镜像(https://hub.docker.com)
docker search python
# 3.拉取镜像(不写版本号默认为latest-最新版)
docker pull python:3.8
# 4.删除镜像(可以通过镜像ID/名称进行删除)
docker rmi 镜像id #删除指定本地镜像
docker rmi `docker images -q` # 删除本地所有镜像
4.docker容器相关命令
# 1.查看容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器
# 2.创建容器(-i保持容器运行 -t开启新的终端 -d表示后台运行)
# -it创建的容器一般称为交互式容器,-id一般称为守护式容器
docker run -it --name=p1 python:3.8 /bin/bash
docker run -id --name=p2 python:3.8
# 3.进入容器
docker exec -it p1 /bin/bash
# 4.启动容器
docker start p1
# 5.停止容器
docker stop p1
# 6.删除容器(可以根据容器ID/容器名称进行删除)
docker rm 容器id # 删除单个容器
docker rm `docker ps -a` # 删除所有容器
# 7.查看容器信息
docker inspect 容器id
5.配置容器的数据卷
- 数据卷:
- 1.是宿主机种的一个目录或文件
- 2.当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 3.一个数据卷可以被多个容器同时挂载
- 4.一个容器也可以被挂载多个数据卷
- 数据卷的作用:
- 1.容器数据持久化
- 2.客户端和容器数据交换
- 3.容器间数据交换
- 数据卷容器:
- 1.创建一个容器,挂载一个目录,让其他容器继承自该容器(--volume-from)
- 2.通过简单的方式实现数据卷配置
# 1.创建容器时,使用-v参数 设置数据卷
# 目录必须是绝对路径、如果目录不存在则创建、可以挂在多个数据卷
docker run ... -v 宿主机目录(文件):容器内目录(文件)
docker run -it --name=p1 -v /home/data:/root/data python:3.8 /bin/bash
# 2.一个容器挂载多个目录(\表示换行继续执行)
docker run -it --name=p2 \
-v /home/data2:/root/data2 \
-v /home/data3:/root/data3 \
python:3.8 /bin/bash
# 3.两个容器挂载同一个数据卷,实现两个容器数据交互
docker run -it --name=p3 -v /home/data:/root/data python:3.8 /bin/bash
docker run -it --name=p4 -v /home/data:/root/data python:3.8 /bin/bash
# 4.配置数据卷容器
# 创建启动p3数据卷容器,使用-v参数设置数据卷(/volume为容器目录)
docker run -it --name=p3 -v /volume python:3.8 /bin/bash
# 创建p1/p2容器,使用 --volumes-from参数设置数据卷
docker run -it --name=p1 --volumes-from c3 python:3.8 /bin/bash
docker run -it --name=p2 --volumes-from c3 python:3.8 /bin/bash
# 其他命令
touch t1.txt #创建文件
echo t2-test > t2.txt #创建并写入文件
mkdir data #创建文件夹
ps -ef | grep python #Linux查询正在运行的python程序
kill -9 进程id # 停掉当前进程-9强制杀死该进程
6.docker应用部署
# 1.搜索并下载MySQL
docker search mysql
docker pull mysql:5.6
# 2.创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
# 启动并配置mysql端口映射
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
# 3.进入容器
docker exec –it c_mysql /bin/bash
- 映射参数说明:
-
-p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
-
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
-
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
-
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
7.镜像制作
# 1.容器转换为镜像(目录挂载的文件不会被制作到镜像中)
docker commit 容器id 镜像名称:版本号 # 容器转换为镜像
docker save -o 压缩文件名称 镜像名称:版本号 # 镜像转换为压缩文件
docker load -i 压缩文件名称 # 压缩文件转换为镜像