在 Docker 节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和管理。通过一个声明式的配置文件描述整个应用,从而使用一条命令完成部署。
解析基于一个 YAML 文件定义多容器应用。
查看版本:
docker-compose --version
如何定义:
YAML文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用 JSON。
YAML 文件包含四个一级Key
version:version 是必须指定的,而且总是位于文件的第一行。
services:用于定义不同的应用服务,Docker Compose 会将每个服务部署在各自的容器中(Docker Compose 会将每个服务部署为一个容器,并且会使用服务名 key 作为容器名字的一部分)
networks:用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络(这是一种单主机网络,只能够实现同一主机上容器的连接)多个服务都连接到 counter-net 网络,因此它们可以通过名称解析到对方的地址。
volumes:用于指引 Docker 来创建新的卷
二级服务定义中包含如下指令:
(1)build 指定 Docker 基于当前目录(.)下 Dockerfile 中定义的指令来构建一个新镜像。该镜像会被用于启动该服务的容器
(2)command 执行的命令
(3)ports 指定 Docker 将容器内(-target)的 80 端口映射到主机(published)的 8080 端口
(4)volumes 指定 Docker 将 xxx 卷(source:)挂载到容器内的 /code(target:)
(5)image 镜像会被从 Docker Hub 上拉取下来,基于指定镜像生成容器
启动一个 Compose 应用
docker-compose up # 命令默认会查找 docker-compose.yml 或者 docker-compose.yaml。如果 Compose 文件是其他文件名,则需要通过 -f 参数来指定
停止一个 Compose 应用
docker-compose down / stop(停止但不删除)
注意:创建的卷并没有删除。docker volume ls
可见该卷依然存在于系统中
查看应用的状态
docker-compose ps
删除相关容器和网络(不会删除卷和镜像)
docker-compose rm
compose 重启
docker-compose restart
举例:
一个简单的应用示例,可能由4个服务构成,将这几个服务组织在一起就是一个应用
- Web前端
- 订单管理
- 品类管理
- 后台数据库