Docker Compose

在 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前端
  • 订单管理
  • 品类管理
  • 后台数据库
原文地址:https://www.cnblogs.com/winyh/p/14193689.html