Compose 简介
Docker 官方项目,实现对 Docker 容器集群的快速编排
它允许用户通过一个单独的 docker-compose.yml 模板文件来定义一组相关联的应用容器为一个项目
Compose 中有两个重要的概念
服务 Service:一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
项目 Project:由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义
Cmpose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理
简单说,Docker Compose 就是Docker的批处理。通过一个YML文档,把多个Docker容器的相关定义信息汇编在一起,然后通过这个文件一次性运行。并且这个容器可以直接使用Dockerfile文件定义。
Compose 安装
# 官方网站
https://github.com/docker/compose
# 支持平台
Linux、macOS、Windows
Windows版 :包含在 Docker Desktop)
Linux版 :
https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
https://download.fastgit.org/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
# YML文件对应Docker版本信息
https://docs.docker.com/compose/compose-file/compose-versioning/
Linux 版 二进制安装
# 最新版下载地址
https://download.fastgit.org/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
# 定义文件目录变量
DOCKER_CONFIG=/usr/local/lib/docker/cli-plugins
# 创建 安装文件目录
sudo mkdir -p $DOCKER_CONFIG
# 下载 最新版 Docker Compose
sudo curl -SL https://download.fastgit.org/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
sudo curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
# 赋予 安装文件目录运行权限
sudo chmod +x $DOCKER_CONFIG/docker-compose
# 查询 Docker Compose版本
docker compose version
Compose 文件编写规范
# Docker Compose 文件版本号
version: '3'
# 服务配置列表
services:
# 服务名,自定义
nginx:
# 基础镜像名
image: nginx:latest
# 容器名,自定义
container_name: nginx_host1
# 端口映射
ports:
- 8081:80
# 数据卷挂载
volumes:
- /opt/nginx:/opt/nginx/html
# 容器网络
networks:
- host1-network
# 随Docker服务自启动
restart: always
# 环境变量
environment:
- TZ=Asia/Shanghai
# 基于Dockerfile文件构建镜像时使用的属性,非必须
build:
# 当前路径,也可以是绝对路径
context: .
# Dockerfile文件名
dockerfile: Dockerfile-demo
# 定义容器之间依赖关系,表明当前容器启动前需要启动的容器
depends_on:
# 容器名
- db
Compose 文件 样例
version: '2.1'
services:
nginx:
image: nginx:latest
container_name: nginx_host1
ports:
- 8081:80
volumes:
- /opt/nginx:/opt/nginx/html
networks:
- host1-network
redis:
image: redis:latest
container_name: redis_host1
ports:
- 63790:6379
networks:
- host1-network
networks:
host1-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.16.28.0/24
gateway: 172.16.28.254
Compose 文件版本对应
3.8 19.03.0+
3.6 18.02.0+
2.3 17.06.0+
2.0 1.10.0+
MySQL 环境变量定义
environment:
- MYSQL_ROOT_PASSWORD=root # 设置一个名为 MYSQL_ROOT_PASSWORD 的环境变量,值为 root
- MYSQL_DATABASE=mydb # 设置一个名为 MYSQL_DATABASE 的环境变量,值为 mydb
- MYSQL_USER=user # 设置一个名为 MYSQL_USER 的环境变量,值为 user
- MYSQL_PASSWORD=password # 设置一个名为 MYSQL_PASSWORD 的环境
Compose 基本命令
# 显示 comppse 版本
docker compose version
# 启动 comppse 容器
docker-compose up -d
# 停止 comppse 容器
docker-compose down
# 重启 comppse 容器
docker-compose restart
# 重新加载 comppse 容器 yml 文件
docker-compose up --force-recreate -d
# 启动 comppse 容器