LoginSignup
72

More than 5 years have passed since last update.

Docker Compose リファレンス

Last updated at Posted at 2015-03-01

概要

2014年末の DockerCon EUで発表された公式のオーケストレーションツール Machine, Swarm, Compose のうち Compose についてのまとめ。
2015年02月26日にダウンロード可能な最初のバージョンが出た

Compose を一言で説明するならば、複数のサービス(コンテナ)からなるアプリケーションを管理できるツール。

Machine, Swarm については以下参照

Compose とは

Compose は複数の要素からなるアプリケーション、つまり複数のコンテナからなるアプリケーションを 1 つの YAML ファイルに定義し、1 つのコマンドラインでアプリケーションの起動や管理ができるツール。

(1 つ 1 つの要素を "サービス" 、そのサービスが組み合わさって動くのが "アプリケーション" と呼ぶことにする。)

Compose ができること

  • 各サービスのスタート・ストップ・リビルド
  • 動いているサービスのステータス確認
  • 動いているサービスのログのストリーミング
  • one-off コンテナの実行

大まかに 3 つのステップで使う。

  1. アプリケーションの各要素の環境を Dockerfile に定義する
  2. その各要素をどう動かし、どう協調させたいかを docker-compose.yml に定義する
  3. docker-compose up コマンドでアプリケーションを起動する

インストール

OSX x86_64

GitHub リポジトリの releases から OSX x86_64 用のバイナリをダウンロードする。

例: https://github.com/docker/compose/releases/download/1.2.0/docker-compose-Darwin-x86_64


$ COMPOSE_VERSION=1.2.0
$ curl -L https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

Linux x86_64

GitHub リポジトリの releases から Linux x86_64 用のバイナリをダウンロードする。

例: https://github.com/docker/compose/releases/download/1.2.0/docker-compose-Linux-x86_64

$ COMPOSE_VERSION=1.2.0
$ curl -L https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

CoreOS

CoreOS は /usr は Read-Only な領域なので、/opt 以下にコマンドを置く。

$ COMPOSE_VERSION=1.2.0
$ curl -L https://github.com/docker/compose/releases/download/$COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
$ sudo mkdir /opt/bin
$ sudo mv ~/docker-compose /opt/bin/docker-compose
$ sudo chown root:root /opt/bin/docker-compose
$ sudo chmod +x /opt/bin/docker-compose

Hello World

Docker Compose を使って Sinatra と Redis コンテナを 1 コマンドで立ち上げる

[WIP] Compose コマンドリファレンス

[WIP] docker-compose.yml リファレンス

[WIP] 環境変数リファレンス

LINK 機能を使ってリンクしたコンテナの接続情報を環境変数を使って受け取るのはもう推奨ではないもよう。その代わりリンクしたサービスの "名前" で /etc/hosts に追記してくれている。

Compose の設定

COMPOSE_PROJECT_NAME

プロジェクト名の設定。デフォルトでは YAML ファイルのあるディレクトリの basename になる。

$ export COMPOSE_PROJECT_NAME=hello_world

COMPOSE_FILE

YAML ファイルのパス。デフォルトはカレントディレクトリの docker-compose.yml

$ export COMPOSE_FILE=docker-compose.production.yml

DOCKER_HOST

docker CLI と同じく docker デーモンの URL を指定できる。デフォルトは unix:///var/run/docker.sock

$ export DOCKER_HOST=tcp://172.17.8.101:2375

Compose コマンドの補完

OSX

bash-completion のインストール

# for OSX
$ brew install bash-completion

# for RedHat, CentOS, Fedora
$ yum install bash-completion

# for Debian, Ubuntu
$ apt-get install bash-completion

# [TODO] for CoreOS

compose 用の補完ファイルのインストール

# for OSX
$ curl -L https://raw.githubusercontent.com/docker/compose/1.1.0/contrib/completion/bash/docker-compose > /usr/local/etc/bash_completion.d/docker-compose

# for Linux
$ curl -L https://raw.githubusercontent.com/docker/compose/1.1.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

これで docker-compose コマンドの補完が利く

$ docker-compose
build    help     kill     logs     port     ps       pull     restart  rm       run      scale    start    stop     up

Swarm 連携

Swarm と組み合わせて Compose(Fig) をマルチホスト環境で使う

REF

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
72