简介
通过前面几篇文章的学习,我们可以通过 Dockerfile 文件让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况,或者开发一个 Web 应用,除了 Web 服务容器本身,还需要数据库服务容器、缓存容器,甚至还包括负载均衡容器等等。
Docker Compose 恰好满足了这样的需求,它是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YAML 文件来配置应用程序所需要的服务。然后使用一个命令,就可以通过 YAML 配置文件创建并启动所有服务。
Docker Compose 项目是 Docker 官方的开源项目,来源于之前的 Fig 项目,使用 Python 语言编写。负责实现对 Docker 容器集群的快速编排。项目地址为:https://github.com/docker/compose/releases
Docker Compose 使用的三个步骤为:
-   使用 
Dockerfile文件定义应用程序的环境; -   使用 
docker-compose.yml文件定义构成应用程序的服务,这样它们可以在隔离环境中一起运行; -   执行 
docker-compose up命令来创建并启动所有服务。 
安装
官方文档:https://docs.docker.com/compose/install/
1  | # 下载二进制文件来使用  | 
docker-compose.yml
官方文档:https://docs.docker.com/compose/compose-file/
Docker Compose 允许用户通过 docker-compose.yml 文件(YAML 格式)来定义一组相关联的容器为一个工程(project)。一个工程包含多个服务(service),每个服务中定义了创建容器(container)时所需的镜像、参数、依赖等。
Docker Compose 模板文件我们需要关注的顶级配置有 version、services、networks、volumes 几个部分,除 version 外,其他几个顶级配置下还有很多下级配置,后面也会详细给大家介绍,先来看看这几个顶级配置都什么意思:
version:描述 Compose 文件的版本信息,当前最新版本为 3.8,对应的 Docker 版本为 19.03.0+ services:定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等 networkds:定义网络,可以多个,根据 DNS server 让相同网络中的容器可以直接通过容器名称进行通信 volumes:数据卷,用于实现目录挂载
示例:
1  | # 描述 Compose 文件的版本信息  | 
常用命令
官方文档:https://docs.docker.com/compose/reference/overview/
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
部分命令选项如下:
-f,--file:指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml; -p, --project-name:指定工程名称,默认使用 docker-compose.yml 文件所在目录的名称; -v:打印版本并退出; --log-level:定义日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)。
查看容器
1  | # 列出工程中所有服务的容器  | 
启动与停止容器
1  | # 前台启动  | 
- 本文标题:Docker Compose 入门
 - 本文作者:valten
 - 创建时间:2020-11-05 11:18:06
 - 本文链接:https://valtenhyl.github.io/Docker/docker-compose/
 - 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!