什么是Docker Compose
Docker Compose是一个用来定义和运行docker应用服务(一个或者多个dacker容器应用)的工具。使用Compose file来配置管理docker应用服务。
为什么要用Docker Compose
先来看下一下例子:
docker run --name jetty -p 8881:8080 -p 22 -d jetty;
docker run --name jenkins -p 8882:8080 --link -d jetty:jetty jenkins;
这段运行的命令是要先运行一个jetty容器,然后启用一个jenkins容器,同时链接到之前启动的jetty容器。命令显的冗长且极容易敲错或者漏敲。而且不容易记忆,迁移复杂。
如果使用Docker Compose的形式,只需配置一个docker-compose.yml文件即可。如下所示:
services:
jetty:
images:jetty
container_name:jetty
ports:
- "8881:8080"
- "22"
jenkins:
imagesLjenkins
container_name:jenkins
ports:
- "8882:8080"
links:
jetty
然后运行命令:
docker-compose up -d
即可做到和之前的命令一样的效果。
如同Dockerfile之于镜像构建,Compose file使从Docker image运行Docker contain的过程结构化、透明化。并使之保留运行的记录。
Dokcer Compose安装
安装使用如下命令:
curl -L https://github.com/docker/compose/releases/download/1.7.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
同时推荐安装zsh的命令行补全:
mkdir -p ~/.zsh/completion
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/zsh/_docker-compose > ~/.zsh/completion/_docker-compose
测试是否安装成功:
docker-compose --version
Compose file语法
具体请参考:官方说明
在此只摘录几个常用的。
build
build
配置项有2种形式。String形式表示镜像build所需的DOckerfile路径;对象形式表示镜像build所需的的dockerfile和参数。例如以下命令:
buile: ./dir
build:
context: ./dir
dockerfile: Dockerfile-redis
args:
buildno: 1
container_name
指定一个自定义的容器名称来代替默认生成的名称。
environment
增加一个环境变量。有2种形式。数组形式和字典形式。例如以下所示:
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
image
指定容器启动的镜像。可以是镜像名称或者是镜像id。例如以下所示:
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/mysql
image: a4bc65fd
如果镜像不存在,会自动pull下来。
links
链接容器和其他服务。可以指定服务名称和服务的别名。例如以下所示:
web:
links:
- db
- db:mysql
- redis
ports
开发端口。例如以下所示:
ports:
- "3000"
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
volumes
挂载主机路径到容器内。例如以下所示:
volumes:
- /var/lib/mysql
- /opt/data:/var/lib/mysql
根据Compose file启动服务
docker-compose up
docker-compose up -d
具体更多命令,请
docker-compose --help
docker-compose [command] --help