Docker 101 - Docker Compose

docker

Fig 已被官方 Compose 取代。

Install

Common

1
2
3
4
5
6
7
8
curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# If you have problems installing with curl, you can use pip instead: pip install -U docker-compose
# 国内还可以通过 DaoCloud 加速安装
# Apply executable permissions to the binary:
$ chmod +x /usr/local/bin/docker-compose

Homebrew on Mac

1
$ brew cask install docker-compose

修改 Shell Profile,创建 alias。

1
2
alias docom='docker-compose'
alias domac='docker-machine'

yml reference

Web App 实例

1
2
3
4
5
6
7
8
9
10
11
12
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
external_links:
- postgres:postgresql
redis:
image: redis

postgres 实例

1
2
3
4
5
6
7
8
9
10
postgres:
container_name: postgres
image: postgres:latest
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=docker
- POSTGRES_USER=docker
volumes:
- /data/docker/postgres:/var/lib/postgresql/data

参数对应 docker 命令,分为两部分,docker build & docker run。

- build

  • build: 从哪来 build image,和 image 互斥
  • expose:
  • entrypoint:
  • command:
  • external_links: 链接已存在 / 不从 compose 起的 container。

- run

  • container_name: 给 container 命名
  • image: 使用哪个 image
  • ports: 端口映射
  • environment: 环境变量设置
  • links: 链接其它 Container
  • volumes: 挂载目录或文件
  • volumes_from: 将一个 container 中所有的 volume 都挂载到当前 container

所有的参数规则都是 < HOST:CONTAINER >

Build and run your app with Compose

- build

1
2
$ docom build
# 相当于 docker build,yml 则对应各个参数

- up

构建,(重新)创建,启动,链接一个服务相关的容器。构建,(重新)创建,启动,链接一个服务相关的容器。

1
2
3
$ docom up
# 默认是非守护进程,就像 docker run 一样,也可以用 -d 来启动 deamon 进程。
$ docom up -d

Compose environment variables reference
https://docs.docker.com/compose/env/

REF::