LoginSignup
44
44

More than 5 years have passed since last update.

Docker Compose ドキュメント参考日本語訳 概要・目次

Last updated at Posted at 2015-07-09

参考訳です。

Compose ドキュメント目次(和訳)

Compose リファレンス目次(和訳)

Docker Compose ドキュメント参考日本語訳 概要

原文:Overview of Docker Compose
https://docs.docker.com/compose/

Compose は、Docker を使った複数のコンテナを使うアプリケーションの定義と実行をするツールです。Compose を使えば、1つのファイル上で複数コンテナを使うアプリケーションを定義できます。それから、コマンドを1つ実行するだけで、アプリケションを実行するために必要な全てが起動できます。

開発環境やステージングサーバやCI向けに最適です。しかし、まだ本番環境での利用は推奨しません(訳注;現時点のバージョン0.3.0はベータ版の位置づけのためです。既知のバグや機能改善によって、このドキュメントそのものも変わる可能性があります)。

Compose を使うには、基本的に3つのステップを踏みます。

  1. Dockerfile を使ってアプリケーションの環境を設定します。このファイルはどこでも再利用できます。
  2. docker-compose.yml の中でアプリケーションをまとめ、サービスとして定義すると、1つの環境で同時に実行できるようになります。
  3. あとは、docker-compose up を実行すると、Compose はアプリケーション全体を起動・実行します。

この docker-compose.yml は次のようなものです:

web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis

Compose にはアプリケーションのライフサイクルを管理するコマンドがあります。

  • 起動、停止、サービスの再構築
  • 実行中のサービスの状態を参照
  • 実行中のサービスのストリーム・ログ出力
  • 1回だけのサービスをコマンドで実行

Compose の文章

クイック・スタート

簡単な Python ウェブ・アプリケーションを Compose で実行する練習を始めましょう。多少の Python の知識が必要となりますが、Python に慣れていなくても、表示されている内容の概念については理解できると思います。

インストールとセットアップ

まず、Docker と Compose をインストールします。

次にプロジェクト(訳者注;作業用)のディレクトリを作成します:

$ mkdir composetest
$ cd composetest

ディレクトリ内に移動し、app.py を作成します。ファイル中には Flask フレームワークを使った簡単なウェブアプリケーションで、Redis に値をインクリメントするものです。

from flask import Flask
from redis import Redis
import os
app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello World! I have been seen %s times.' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

次に、requirements.txt に Python の依存情報を定義します。

flask
redis

Docker イメージの作成

それでは、アプリケーションが依存している全てを含む Docker イメージを作成します。Dockerfile と呼ばれるファイルで、どのようなイメージを作成するか記述します。

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python app.py

このファイルが Docker に伝えるのは、

  • Python 2.7 イメージを使ってイメージの構築を始める
  • 現在のディレクトリ . を、イメージの /code に追加する
  • 作業ディレクトリを /code に指定する
  • Python に依存するパッケージをインストールする
  • python app.py をコンテナのデフォルト・コマンドに指定する

Dockerfile の詳細については Docker user guide(英語)Docker reference(英語) をお読みください。

構築するには docker build -t web . を実行します。

サービスの定義

次に、docker-compose.yml を使ってサービスの集まりを定義します。

web:
  build: .
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis

ここでは2つのサービスを定義します:

web

  • 現在のディレクトリにある Dockerfile から構築する
  • コンテナの公開ポート 5000 をホストマシン上のポート 5000 に転送する
  • web コンテナを Redis サービスにリンクして接続する
  • ホスト上の現在のディレクトリをコンテナの /code にマウントし、コードを変更したいときのイメージ再構築を不要にする

redis

  • Docker Hub レジストリから公開 Redis イメージを取得する

Compose を使った構築とアプリケーションの実行

これで docker-compose up を実行すると、Compoes は Redis イメージを取得し、コード用のイメージを作成し、全て起動します:

$ docker-compose up
Pulling image redis...
Building web...
Starting composetest_redis_1...
Starting composetest_web_1...
redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
web_1   |  * Running on http://0.0.0.0:5000/

web アプリケーションは、Docker デーモンのホスト上でポート 5000 をリッスンしています(もし boot2docker を使っているのであれば、boot2docker ip で IP アドレスを確認できます )。ブラウザで http://boot2dockerのIPアドレス:5000 を開くと、次のように表示されます:

Hello World! I have been seen 1 times.

ページを再読込すると、番号が増えます。

サービスをバックグラウンドで実行したい場合は、-d フラグ(「detached」デタッチ・モード)で docker-compose up を実行し、docker-compose ps で何が稼働しているか見てみます:

$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...
$ docker-compose ps
    Name                 Command            State       Ports
-------------------------------------------------------------------
composetest_redis_1   /usr/local/bin/run         Up
composetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp

docker-compose run は、サービスを1度だけ実行するコマンドです。例えば、web サービスで利用可能な環境変数を見るには:

$ docker-compose run web env

利用可能なコマンドについては、docker-compose --help をご覧ください。

Compose を docker-compose up -d で実行すると、おそらく終わったらサービスを停止するでしょう。

$ docker-compose stop

以上、Compose の基本動作を見て来ました。

リリース・ノート

Version 1.2.0 (2015年4月7日)

リリースに関する全ての情報は、1.2.0 マイルストーン・プロジェクトページ(英語)をお読みください。

  • extends キーワードは、共有設定ファイルをでサービスを拡張することができます。詳細はプルリクエスト #1088(英語)をご覧ください。

  • Swarm とう上手く連携できます。Swarm は同じホスト上にあるコンテナの、相互依存をスケジュールします。``詳細はプルリクエスト #972をご覧ください。

ヘルプを得るには

Docker Compose は、まだ初期段階であり、活発に開発中です。ヘルプが必要であれば、コントリビューターや、プロジェクトで同じことを考えている個人に話しかけてください。私達はコミュニケーションのためのチャンネルをオープンにしています。

  • バグや機能リクエスト:GitHub の issue trackerをお使いください。
  • プロジェクトの方とリアルタイムに話したい:IRC の #docker-compose チャンネルに参加ください。
  • コードの貢献やドキュメントの変更:GitHub 上でプルリクエストをください。

より詳細な情報やリソースについては、Getting Help project page をご覧ください。


内容に問題がありました、編集リクエスト or コメントいただけると助かります。

44
44
0

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
44
44