云计算核心技术Docker教程:Docker Compose yml常用配置指令简介

注册 Vultr VPS 送你10美金 免费玩4个月

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲。

Docker Compose 默认使用文件名 docker-compose.yml,例如以下就是一个docker-compose.yml文件示例:

1

version:指定本 yml 依从的 compose 哪个版本制定的

services:用于定义不同的应用服务,上例中分别定义了两个服务web和redis

web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。

redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。

docker-compose.yml包含 4 个一级 key:version、services、networks、volumes。

version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。

services 用于定义不同的应用服务。上边的例子定义了两个服务:一个名为 web-fe 的 Web 前端服务以及一个名为 redis 的内存数据库服务。

networks配置容器连接的网络,默认情况下,Docker Compose 会创建 bridge 网络。

volumes 用于指引 Docker 来创建新的卷。

比较常用的配置指令:

build

指定为构建镜像上下文路径:

例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:

2

或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:

3

context:上下文路径。

dockerfile:指定构建镜像的 Dockerfile 文件名。

args:添加构建参数,这是只能在构建过程中访问的环境变量。

labels:设置构建镜像的标签。

target:多层构建,可以指定构建哪一层。

 

ports

指定 Docker 将容器内(-target)的 5000 端口映射到主机(published)的 5000 端口,这意味着发送到 Docker 主机 5000 端口的流量会被转发到容器的 5000 端口。容器中的应用监听端口 5000。

image

指定容器运行的镜像。以下格式都可以:

image: redis

image: ubuntu:14.04

image: tutum/influxdb

image: example-registry.com:4000/postgresql

image: a4bc65fd # 镜像id

 

network_mode

设置网络模式,例如:

network_mode: “bridge”

network_mode: “host”

network_mode: “none”

network_mode: “service:[service name]”

network_mode: “container:[container name/id]”

 

volumes

将主机的数据卷或着文件挂载到容器里。

注册 Vultr VPS 送你10美金 免费玩4个月