Compose 的使用
介绍
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose 中有两个重要的概念:
- 服务(service):一个个应用容器实例,比如订单微服务、库存微服务、mysql容器、nginx容器或者redis容器。
- 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
docker-compose 常用命令
dockers-compose 的常用命令如下:
- docker-compose up:启动所有 docker-compose 服务,加上 -d 参数表示后台运行。
- docker-compose down:停止并删除容器、网络、卷、镜像。
- docker-compose exec 服务:进入指定的容器内部。
- docker-compose ps:展示当前 docker-compose 编排过的运行的所有容器。
- docker-compose top:展示当前 docker-compose 编排过的容器进程。
- docker-compose logs 服务:查看指定服务容器输出日志。
- docker-compose config:验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。
- docker-compose restart:重启服务。
- docker-compose start:启动服务。
- docker-compose stop:停止服务。
docker-compose.yaml 常用语法
docker-compose.yml 格式为:
1 | version: "3" |
每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。
build:指定 Dockerfile 所在文件夹的路径,Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
image:指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
container_name:指定容器名称。默认将会使用
项目名称_服务名称_序号
这样的格式。注意:指定容器名称后,该服务将无法进行扩展,因为 Docker 不允许多个容器具有相同的名称。ports:暴露端口信息,使用列表。
1
2
3
4ports:
- "3000"
- "8000:8000"
- "49100:22"volumes:数据卷所挂载路径设置,使用列表。
1
2
3volumes:
- /var/lib/mysql
- cache/:/tmp/cacheenvironment:设置环境变量。
1
2
3
4
5
6environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'db2021'
MYSQL_USER: 'zzyy'
MYSQL_PASSWORD: 'zzyy123'command:覆盖容器启动后默认执行的命令。
working_dir:指定容器中工作目录。
depends_on:解决容器的依赖、启动先后的问题。
1
2
3depends_on:
- db
- redisnetworks:配置容器连接的网络。
1
2
3networks:
- some-network
- other-networkdns:自定义 DNS 服务器。可以是一个值,也可以是一个列表。
1
2
3dns:
- 8.8.8.8
- 114.114.114.114