云计算核心技术Docker教程:Docker Compose yml常用配置指令简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲。
Docker Compose 默认使用文件名 docker-compose.yml,例如以下就是一个docker-compose.yml文件示例:
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 所构建的镜像:
或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:
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
将主机的数据卷或着文件挂载到容器里。