简介
通过前面几篇文章的学习,我们可以通过 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 许可协议。转载请注明出处!