複数のコンテナからなるアプリケーションがあったとします。 dockerだけで複数のコンテナを立ち上げる場合、同時に立ち上げるためのシェルスクリプトが必要になったり、再起動など一つ一つ名前を指定して行うなど、コンテナが増えると管理が面倒になってきます。
そこで、複数コンテナを簡単に立ち上げたり操作したりできるようにしたツールをDocker Composeといいます。
複数コンテナの設定や依存関係をdocker-compose.ymlに記述し、単一コマンドで複数コンテナを一度に起動できるようになります。
Docker Composeを利用するケース
ソフトウェアの開発 複数のサーバーを組み合わせて構築されているサービスにおいて、コマンド一つで立ち上げる。
テスト環境を自動化する Docker Composeを利用することで必要なテスト環境をコマンド一つで起動できる。
Docker Composeのインストール
Docker Engineをインストールします(Dockerをインストールする 【MacOS】)
Docker EngineがインストールできたらDocker Composeをインストールします。
$ curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose //実行権限を与える $ chmod +x /usr/local/bin/docker-compose
インストールできているか確認します
$ docker-compose --version docker-compose version: 1.6.2
バージョンが表示されていればインストール完了です
Docker Composeを使う手順
- それぞれのコンテナのDockerfileを作成する
- docker-compose.ymlを作成し、起動および構築定義、使用するDockerネットワークを記述する
- docker-compose upコマンドでdocker-compose.ymlで定義したコンテナの開始
1. Dockerfileを作成
2. docker-compose.ymlの作成
例(python3の環境構築)
version: '3' services: python3: restart: always build: . container_name: 'python3' working_dir: '/root/' volumes: - ./src:/root/src/
version : docker-composeで使用するバージョンを定義 services : アプリケーションを動かすための各要素 – restart : 実行時に再起動するか – build : ComposeFileを実行し、ビルドされるときのパス – volumes : マウントする設定ファイルパスを指定
とにかく設定を書きこんでいきます。 参考:公式リファレンス
3. コンテナの開始
コンテナの起動
$ docker-compose up -d
「-d」オプションはそれぞれのコンテナをバックグラウンドで起動させるオプション
プロセスの確認
$ docker-compose ps
コンテナに接続
$ docker-compose exec python3 bash
コンテナ停止
$ docker-compose down