Docker Compose
Docker Compose とは
Docker Compose は、複数の Docker コンテナを単一のアプリケーションとして扱い、それらを定義、実行、スケールすることができます。
Docker Compose を使用すると、Docker コマンドを直接使用する場合に比べて、より高度な構成管理が可能になります。Docker Compose ファイルを使用して、コンテナの構成、ネットワーク、ボリュームなどを定義できます。また、複数のコンテナを一度に起動することができ、コンテナ間で簡単に通信することができます。
Docker Compose を使用する主な目的は、複数のコンテナからなるアプリケーションを簡単に実行することです。例えば、Web アプリケーションを実行する場合、Web サーバー、データベースサーバー、キャッシュサーバーなどが必要です。これらのコンテナを個別に管理する代わりに、Docker Compose を使用して、1 つのコマンドですべてのコンテナを起動できます。
Docker Compose を使用することで、Docker アプリケーションの開発、デプロイ、管理が簡単になります。また、アプリケーションの複雑な構成を扱う際にも便利です。
Docker compose 特徴
Docker Compose の主な特徴
複数のコンテナを一括して管理できる
Docker Compose を使用することで、複数のコンテナを一度に定義、起動、管理できます。これにより、複雑なアプリケーションの構成を簡単に管理できます。
コンテナ間の通信を簡単に設定できる
Docker Compose を使用することで、複数のコンテナ間で簡単に通信することができます。これにより、アプリケーション内の様々なコンポーネント間のやり取りを簡単に設定できます。
設定ファイルで管理が可能
Docker Compose では、YAML ファイルを使用してコンテナ構成、ボリューム、ネットワークなどを定義します。これにより、Docker コマンドを使用するよりも簡単にアプリケーションを定義、実行、管理できます。
スケールアウトが簡単
Docker Compose を使用することで、複数のコンテナをスケールアウトすることが簡単になります。これにより、アプリケーションの負荷に応じてコンテナの数を調整できます。
様々な環境で動作する
Docker Compose は、様々な環境で動作します。ローカル環境、開発環境、本番環境などで同じ Docker Compose ファイルを使用してアプリケーションを実行できます。
他のツールとの統合が容易
Docker Compose は、他のツールとの統合が容易です。例えば、CI/CD ツールと連携することで、アプリケーションのデプロイを自動化することができます。
Docker Compose を使用することで、複雑なアプリケーションの構成を簡単に管理できるだけでなく、開発、テスト、本番環境で同じ環境を再現することもできます。
よく使う Docker compose コマンド
Docker Compose を使用している場合、コンテナの状態や設定情報を確認するためのいくつかのコマンドがあります。
コンテナの状態確認
これにより、Compose ファイルで定義されたサービスの一覧と、それぞれのサービスが起動しているかどうか、およびどのポートで公開されているかなどの情報が表示されます。
コンテナのログ表示
特定のサービスのログを表示します。<サービス名>の部分には、Compose ファイルで定義したサービスの名前を指定します。
コンテナの詳細情報表示
コンテナ内でシェルを実行
特定のサービス内のコンテナで、任意のコマンドを実行します。例えば、シェルを起動する場合は次のようになります。
ここで <サービス名> には Compose ファイルで定義されたサービスの名前を入力します。
コンテナの再起動
特定のサービスを再起動します。
その他のコマンド
docker-compose down
コマンドは、docker-compose up
コマンドで起動したコンテナを削除する場合に使用することが推奨されています。
docker-compose stop
コマンドで停止したコンテナを削除する場合は、docker-compose rm
コマンドを使用することが推奨されています。
サービス内にコマンドを実行する docker compose exec
docker-compose exec [service-name] [command]
[service-name]
には、Docker Compose で定義されたサービス名を指定します。
[command]
には、実行したいコマンドを指定します。
-it
オプションを付けて実行することで、インタラクティブなシェルを使用することができます。
インタラクティブなシェルとは
インタラクティブなシェルとは、ユーザーとコンピュータの対話的なコマンドライン環境のことを指します。つまり、ユーザーがコマンドを入力すると、その入力に基づいてプログラムが動作し、結果が表示されます。一般的に、Linux や macOS などの UNIX 系オペレーティングシステムでは、シェルがインタラクティブなコマンドライン環境を提供します。
インタラクティブなシェルを使用すると、ユーザーはコマンドを入力して、その結果を即座に確認することができます。また、ファイルやディレクトリの操作、プログラムの実行、ネットワークの操作など、多くのタスクをコマンドラインから実行することができます。
Docker の場合、コンテナ内でシェルを実行する際に、インタラクティブなシェルを使用することができます。インタラクティブなシェルを使用することで、コンテナ内での作業をより直感的に行うことができます。
docker compose コマンドとオプション一覧
使い方
コマンド
コマンド | 説明 |
build | サービスの構築または再構築 |
config | compose ファイルの確認と表示 |
create | サービスの作成 |
down | コンテナ・ネットワーク・イメージ・ボリュームの停止と削除 |
events | コンテナからリアルタイムにイベントを受信 |
help | コマンド上でヘルプを表示 |
kill | コンテナを kill (強制停止) |
logs | コンテナの出力を表示 |
pause | サービスを一時停止 |
port | ポートに割り当てる公開用ポートを表示 |
ps | コンテナ一覧 |
pull | サービス用イメージの取得 |
restart | サービスの再起動 |
rm | 停止中のコンテナを削除 |
run | 1度だけコマンドを実行 |
scale | サービス用コンテナの数を指定 |
start | サービスの開始 |
stop | サービスの停止 |
unpause | サービスの再開 |
up | コンテナの作成と開始 |
version | Docker Compose のバージョン情報を表示 |
オプション
簡略 | フルコマンド | 説明 |
-f | --file FILE | 別の compose ファイルを指定 (デフォルト: docker-compose.yml) |
-p | --project-name NAME | 別のプロジェクト名を指定 (デフォルト: directory name) |
| --verbose | 詳細情報を表示 |
-v | --version | バージョンを表示して終了 |
-H | --host HOST | 接続先のデーモン・ソケット |
| --tls | TLS を使う;--tlsverify の指定も含む |
| --tlscacert CA_PATH | この CA で署名した証明書のみ信頼 |
| --tlscert CLIENT_CERT_PATH | TLS 証明書ファイルへのパス |
| --tlskey TLS_KEY_PATH | TLS 鍵ファイルへのパス |
| --tlsverify | TLS を使いリモートを認証 |
| --skip-hostname-check | クライアントの証明書で指定されたデーモンのホスト名を確認しない。 |
※ 複数の -f
設定ファイルを指定した場合、Compose は1つの設定ファイルに連結します。
参考