Docker compose

  • 複数のコンテナをコードで管理
  • コンテナの同時起動・停止
  • コンテナのスケール
  • ネットワーク機能に対応
# setting docker compose
$ curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

$ docker-compose --version
docker-compose version 1.17.1, build 6d101fb

Docker compose の作成

$ git clone https://github.com/xxx/Dockerfile
$ cd Dockerfile/blogserver
$ docker-compose build

//  local で先ずは試し、local で動作することを確認する
// サービスのアップ (-d オプションを付与しないと foreground で実行され、 ctrl-c でサービスが全て落ちる)
$ docker-compose up -d
$ docker-compose ps

// 用済みなので掃除
$ docker-compose stop
$ docker-compose rm -f

// ECS Cluster の起動 (10分くらい掛かる)
$ ecs-cli up --keypair xxx --capability-iam --instance-type t2.medium --security-group sg-xxx --vpc vpc-xxx --subnets subnet-xxx --force --no-associate-public-ip-address --region ap-northeast-1 --size 1

// compose.yml の反映
$ ecs-cli compose --file docker-compose.yml up
$ ecs-cli ps

// Cluster の削除
$ ecs-cli compose --file ./docker-compose.yml service rm
$ ecs-cli down --force

CLI

// Dockerfile より image を作成
$ docker-compose build

// image を取得
$ docker-compose pull

// docker-compose build, docker-compose pull 後 docker run
$ docker-compose up -d

// 個々の service を指定。依存関係も同時に起動する。
$ docker-compose up -d redmine

// docker-compose によって起動しているコンテナ群
$ docker-compose ps

// container すべての出力を表示
$ docker-compose logs

// container をまとめて終了
$ docker-compose stop

// container をまとめて削除
$ docker-compose rm

// docker-machine の IPアドレスを確認
$ docker-machine ls

指定可能な directive

command
cpu_shares
entry point
environment
image
links
mem_limit (in bytes)
ports
volumes
volumes_from

deprecated

機能廃止は deprecated になってから通常は9ヶ月で廃止される。その前に移行すること。
Docker Engine » 廃止機能

注意点

  • OSディストリビューションに同梱されているものではなく、個別にDockerのリポジトリから新しいものを入れる。1.10以降、Embedded DNS機能によりlink無しでも同じネットワーク内のコンテナがhostnameで参照可能な為。link切れによるコンテナ再作成のコスト低減になる。
  • Dockerのストレージエンジンは、overlayfs がよい。速く、devicemapper(特にLVM) を使用していると、容量が足りなくなったとき、サーバーが死んでしまう。

docker-ce, docker-engine, docker.io

  • docker-ce: 2017/12 現在の Docker の呼称
  • docker-ee: エンタープライズ版
  • docker-engine: 昔の Docker の呼称 (upgrade 必要)
  • docker.io: ubuntu が管理している Docker パッケージ名

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です