Docker の使い方(その6:Docker Compose)
前回、「Docker の使い方(その5:ネットワーク)」の続きです。今回は Docker Compose についてです。
Docker Compose とは?
ここまで Docker の基本的な操作について説明してきました。 コンテナを使ってアプリケーションを起動するためには、 コンテナイメージからコンテナを起動し、そのコンテナに必要な環境変数を指定し、ボリュームを作成し、ネットワークを作成し、ポートを公開する必要があります。
お気付きになったことはありませんか? 必要な設定が多いのです。 これらの設定を1つ1つ行っていくのはかなり大変です。 1つのコンテナを使った環境ですら作るのが大変なのに、複数のコンテナを使って連携させる環境を作るならなおさらです。 そこで登場するのが、Docker Compose です。
Docker Compose を使用すると、コンテナの構成に関する様々な内容を、構成ファイル(Compose ファイル)という形で一括して記載することができます。 その Compose ファイルを使うことによって、複雑な環境を簡単に作成したり削除したりすることができるようになります。 複数のコンテナを一括して操作できるようになりますし、他のユーザーさんと環境を共有することも簡単になるでしょう。
Compose ファイル
Compose ファイルは、docker-compose.yml という名前のファイルです。 拡張子からわかるように YAML 形式になります。 YAML 形式なのでコメントも書けます。
このファイルをプロジェクトのルートディレクトリなどに作成します。 Git などのバージョン管理ツールに登録しておくと良いでしょう。 そうすることで、そのファイルを使って他のユーザーさんも同じ環境を作れるようになります。
Compose ファイルにはいくつかバージョンがありますので、作成する際はバージョンを定義することから始めましょう。 その次に、作成したいサービス(コンテナ)の一覧を定義します。
デフォルトでは、専用のネットワークが自動的に作成されます。 定義したコンテナ同士はデフォルトで接続できる状態になりますので、それで問題ない場合はネットワークを自分で定義する必要はありません。
Compose ファイルの詳しい書き方については、ここでは記載しません。 あまりにも大量にありますので、公式のドキュメントを見てもらった方が良いと思います。
書式と簡単な例だけ記載しておきます。
version: "バージョン番号" services: コンテナ構成の一覧
version: "3.7" services: # httpd コンテナ # コンテナイメージ「httpd:2.4」をベースとする # ポートマッピングはホスト側ポート「8080」、コンテナ側ポート「80」とする httpd: image: httpd:2.4 ports: - 8080:80 # mysql コンテナ # コンテナイメージ「mysql:5.7」をベースとする # ポートマッピングはホスト側ポート「3306」、コンテナ側ポート「3306」とする # 名前付きボリューム「todo-mysql-data」を使用する mysql: image: mysql:5.7 ports: - 3306:3306 volumes: - todo-mysql-data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: todos volumes: todo-mysql-data:
構成の一覧を表示する
構成の一覧を表示するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop で構成の一覧を表示する
Docker Desktop で構成の一覧を表示するには、Docker Desktop の左メニューの「Containers / Apps」をクリックします。 コンテナの一覧も一緒に表示されます。
コマンドで構成の一覧を表示する
コマンドで構成の一覧を表示するには、docker compose ls
コマンドを使用します。
オプション無しで実行した場合は、動作中の構成のみ表示され、停止中の構成は表示されません。
docker compose ls
NAME STATUS test-proj running(2)
全ての構成の一覧を表示する
停止中の構成も含めた全ての構成の一覧を表示するには、
docker compose ls
コマンドに -a
オプションを付けて実行します。
docker compose ls -a
新しい構成を作成する
新しい構成を作成するには、docker compose create
コマンドと docker compose up
コマンドの2つがあります。
この2つのコマンドの違いは、新しい構成を作成した後に、構成の起動を行うかどうかです。
コマンド | 説明 |
---|---|
docker compose create コマンド |
新しい構成を作成し、その構成を起動しません。 |
docker compose up コマンド |
新しい構成を作成し、その構成を起動します。 |
新しい構成を作成する
新しい構成を作成するには、
Compose ファイルを置いてあるディレクトリで docker container create
コマンドを実行します。
docker container create
コマンドは、新しい構成を作成しますが、その構成の起動は行いません。
構成の作成のみを行います。
docker compose create
新しい構成を作成して起動する
新しい構成を作成して起動するには、
Compose ファイルを置いてあるディレクトリで docker compose up
コマンドを実行します。
docker compose up
コマンドは、新しい構成を作成し、その構成を起動します。
構成を作成した後にいちいち構成を起動させるのがメンドウな場合は、こちらのコマンドを使った方が便利です。
docker compose create
コマンドの後に docker compose start
コマンド(後述)を実行するのと同じです。
-d
オプションを付けると、全てのコンテナがデタッチモード(バックグラウンド)で起動します。
忘れずに付けておきましょう。
docker compose up -d
構成を起動する
既に作成されている構成を起動します。 構成を起動するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop で構成を起動する
Docker Desktop で構成を起動するには、Docker Desktop の「Containers / Apps」から起動したい構成の「START」ボタンをクリックします。
コマンドで構成を起動する
コマンドで構成を起動するには、
Compose ファイルを置いてあるディレクトリで docker compose start
コマンドを使用します。
docker compose start
構成のログ表示する
構成したコンテナの中で何が起こっているのかを確認したい場合は、構成のログを表示して確認しましょう。 全てのコンテナで発生したログが一か所にまとめて表示されるので便利です。 構成のログを表示するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop で構成のログを表示する
Docker Desktop で構成のログを表示するには、Docker Desktop の「Containers / Apps」からログを表示したい構成をクリックします。
コマンドで構成のログを表示する
コマンドで構成のログを表示するには、
Compose ファイルを置いてあるディレクトリで docker compose logs
コマンドを使用します。
docker compose logs
ログをリアルタイムで表示する
ログをリアルタイムで表示するには、
Compose ファイルを置いてあるディレクトリで docker compose logs
コマンドに -f
オプションを付けて実行します。
docker compose logs -f
構成を停止する
構成を停止するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop で構成を停止する
Docker Desktop でコンテナを停止するには、Docker Desktop の「Containers / Apps」から停止したい構成の「STOP」ボタンをクリックします。
コマンドで構成を停止する
コマンドで構成を停止するには、
Compose ファイルを置いてあるディレクトリで docker compose stop
コマンドを使用します。
docker compose stop
構成を再起動する
構成を再起動するには、
Compose ファイルを置いてあるディレクトリで docker compose restart
コマンドを使用します。
docker compose restart
構成を削除する
構成を削除するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop で構成を削除する
Docker Desktop で構成を削除するには、Docker Desktop の「Containers / Apps」から削除したい構成の「DELETE」ボタンをクリックします。 構成が動作中の場合でも削除できるので注意してください。
コマンドで構成を削除する
コマンドで構成を削除するには、
Compose ファイルを置いてあるディレクトリで docker compose rm
コマンドを使用します。
構成を削除するには、その構成を先に停止しておく必要があります。
docker compose rm
構成の停止と削除を同時に行う
構成を削除するには、その構成を先に停止しておく必要がありますが、
Compose ファイルを置いてあるディレクトリで docker compose down
コマンドを実行すると、
構成の停止と削除を1つのコマンドで同時に行うことができます。
docker compose down
参考サイト
- Use Docker Compose | Docker Documentation
- Compose ファイル — Docker-docs-ja 20.10 ドキュメント
- Compose file | Docker Documentation
- docker compose ls | Docker Documentation
- docker compose create | Docker Documentation
- docker compose up | Docker Documentation
- docker compose start | Docker Documentation
- docker compose logs | Docker Documentation
- docker compose stop | Docker Documentation
- docker compose restart | Docker Documentation
- docker compose rm | Docker Documentation
- docker compose down | Docker Documentation