目录
一、安装docker
- yum包更新到最新
yum update
- 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动的依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum安装源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker,出现界面都按y
yum install -y docker-ce
二、docker服务的相关命令
- 启动docker服务
systemctl start docker
- 查看docker服务状态
systemctl status docker
- 停止docker服务
systemctl stop docker
- 重启docker
systemctl restart docker
- 设置docker开机自启动
systemctl enable docker
三、docker镜像相关命令
- 查看已有镜像文件
docker images
- 拉取镜像文件(以下载redis为例)
docker pull redis #默认下载latest版本的
docker pull redis:5.0 #指定下载5.0版本
- 删除镜像
docker rmi redis:latest #通过版本号删除镜像
docker rmi c5da061a611a #通过image id删除镜像
#删除所有镜像(组合命令),其中docker images -q是查询所有镜像id
docker rmi `docker images -q`
#强制删除所有镜像,包括相同ID、标签的镜像
docker rmi -f $(docker images -qa)
#根据关键字批量删除镜像和编译错误镜像
docker rmi $(docker images | grep "dev" | awk '{print $3}')
四、容器相关命令
容器是通过镜像创建的;
- 通过镜像创建并运行容器
#1. -i代表容器一直运行,-t代表给容器一个终端,--name=c1表示给容器取别名.
docker run -i -t --name=c1 redis:5.0
#2. 创建后台运行的容器-d代表后台运行
docker run -i -d --name=c2 redis:5.0
- 进入在后台运行的容器(以redis为例)
docker exec -it c2 redis-cli
- 查看正在运行的容器
docker ps
- 查看现有的容器
dockers ps -a
- 停止运行容器
docker stop docker
- 重新启动容器
docker start c2
- 删除容器
docker rm c1 #删除容器c1
docker rm `docker ps -aq` #组合命令删除所有容器
- 查看容器信息
docker inspect c2
五、容器是数据卷
5.1 什么是数据卷?
两个问题:
- docker容器删除后,容器中存储的数据还在吗?
- docker容器和外部机器可以直接交换文件吗?
- 容器间如何进行数据交互呢?
当宿主机中的一个文件,被容器中的数据文件挂载(共享),此时该文件就叫做数据卷;通俗点说,就是文件的映射,一方改变另一方会立即跟着改变;一个数据卷可以被多个容器同时挂载。
5.2 配置数据卷
5.2.1 宿主机与容器间的数据卷配置
docker run ... -v 宿主机目录(文件):容器内目录(文件)
注意事项:
- 目录必须是绝对路径;
- 如果目录不存在,会自动创建;
- 可以挂载多个数据卷。
5.2.2 容器数据卷
当一个容器挂载一个数据卷后,其他容器挂载该容器内的数据目录,被叫做容器数据卷;
例如c3的/volume挂载宿主机的数据卷,c1、c2容器挂载c3的volume;
docker run -it --name=c3 -v /volume centos:7
docker run -it --name=c1 --volumes-from c3 centos:7
docker run -it --name=c2 --volumes-from c3 centos:7
六、应用部署全过程(以mysql为例)
6.1 查找mysql可用版本
docker官网搜索栏搜索mysql:
查看可用版本:
6.2 拉取mysql镜像
docker pull mysql:5.7 #拉取mysql5.7的镜像
6.3 创建存储mysql数据的目录
mkdir mysql #创建目录
cd mysql #进入目录
6.4 启动mysql容器
我们的目标是在宿柱机启动一个mysql服务,该服务在别的机器上能访问,但是容器内开启的端口智能被宿柱机访问,故需要做端口映射;将容器内的3306端口与宿主机的3307端口映射。
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.7
七、docker Compose
7.1 服务编排是什么?
按照一定规则,批量的管理容器;
7.2 Docker Compose是什么?
Docker Compose是一个编排多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建、启动、停止。使用步骤:
- 利用dockerfile定义运行环境镜像;
- 使用docker-compose.yml定义组成应用的各服务;
- 运行docker-compose up启动应用。