1. Docker Compose 工具
当我们的业务越来越复杂时,需要多个容器相互配合,甚至需要多个主机组成容器集群才能满足我们的业务需求,这个时候就需要用到容器的编排工具了。因为容器编排工具可以帮助我们批量地创建、调度和管理容器,帮助我们解决规模化容器的部署问题。
Docker 三种常用的编排工具:Docker Compose、Docker Swarm 和 Kubernetes。
2. Docker Compose
使用 Docker Compose 启动容器时, Docker Compose 会默认使用 docker-compose.yml 文件。
Docker Compose 模板文件一共有三个版本: v1、v2 和 v3。目前最新的版本为 v3,也是功能最全面的一个版本,下面我主要围绕 v3 版本介绍一下如何编写 Docker Compose 文件。
Docker Compose 文件主要分为三个部分,分别是:service(服务)、network(网络)、volume(数据卷)。
- service(服务):定义容器启动的配置,例如执行
docker run
命令时传递的启动参数、容器的镜像和环境变量等。 - network(网络):网络定义了容器的网络配置,就像我们执行
docker network create
命令创建网络配置一样。 - volumes(数据卷):数据卷定义了容器的卷配置,就像我们执行
docker volume create
命令创建数据卷一样。
2.1 Docker Compose 文件结构
version: "3"
services:
nginx:
## ... 省略部分配置
networks:
frontend:
backend:
volumes:
db-data:
2.2 Docker Compose 编写
编写启动 wordpress
的 docker-compose.yml 文件:
version: '3' # 指定 compoes 文件的版本
services: # 服务模块,定义容器配置信息
mysql: # 声明的服务 - mysql
image: mysql:5.7 # 镜像文件
volumes: # 数据卷
- mysql_data:/var/lib/mysql # 指向 全局的数据卷配置
restart: always
environment: # 指定容器启动的环境变量
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mywordpress
MYSQL_USER: mywordpress
MYSQL_PASSWORD: mywordpress
wordpress:
depends_on: # 标识服务之间的依赖关系,先启动 mysql 服务,再启动本服务
- mysql
image: wordpress:php7.4
ports:
- "8080:80" # 暴露的端口信息
restart: always
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: mywordpress
WORDPRESS_DB_PASSWORD: mywordpress
WORDPRESS_DB_NAME: mywordpress
volumes: # 声明的全局的数据卷
mysql_data: {}
书写上述配置文件后,在该文件目录下运行 up
命令就启动服务,停止服务使用 stop
命令。
启动:
docker-compose up -d
通过本地网址 http://localhost:8080 完成 Wordpress 系统的访问。
停止 compose:
docker-compose stop
2.3 Docker Compose 操作命令
可以使用docker-compose -h命令来查看 docker-compose 的用法,docker-compose 的基本使用格式如下:
docker-compose [-f <arg>...] [options] [--] [COMMAND] [ARGS...]
其中 options 是 docker-compose 的参数,支持的参数和功能说明如下:
-f, --file FILE 指定 docker-compose 文件,默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称,默认使用当前目录名称作为项目名称
--verbose 输出调试信息
--log-level LEVEL 日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
-v, --version 输出当前版本并退出
-H, --host HOST 指定要连接的 Docker 地址
--tls 启用 TLS 认证
--tlscacert CA_PATH TLS CA 证书路径
--tlscert CLIENT_CERT_PATH TLS 公钥证书问价
--tlskey TLS_KEY_PATH TLS 私钥证书文件
--tlsverify 使用 TLS 校验对端
--skip-hostname-check 不校验主机名
--project-directory PATH 指定工作目录,默认是 Compose 文件所在路径。
COMMAND 为 docker-compose 支持的命令。支持的命令如下:
build 构建服务
config 校验和查看 Compose 文件
create 创建服务
down 停止服务,并且删除相关资源
events 实时监控容器的时间信息
exec 在一个运行的容器中运行指定命令
help 获取帮助
images 列出镜像
kill 杀死容器
logs 查看容器输出
pause 暂停容器
port 打印容器端口所映射出的公共端口
ps 列出项目中的容器列表
pull 拉取服务中的所有镜像
push 推送服务中的所有镜像
restart 重启服务
rm 删除项目中已经停止的容器
run 在指定服务上运行一个命令
scale 设置服务运行的容器个数
start 启动服务
stop 停止服务
top 限制服务中正在运行中的进程信息
unpause 恢复暂停的容器
up 创建并且启动服务
version 打印版本信息并退出