Linux で Docker Compose を始める
Docker Compose は、Linux でマルチコンテナ Docker アプリケーションを定義して実行するためのツールです。 Compose では、YAML ファイルを使用してアプリケーションのサービスを構成します。次に、1 つのコマンドで構成からすべてのサービスを作成して開始します。以下は、Docker compose がどのように機能するかを示す簡単な図です。
Docker compose の仕組み - グラフィカルな図解
Docker Compose は基本的に 3 段階のプロセスです。
- まず、 再度再利用できるようにDockerfile を使用してアプリケーション環境を定義する必要があります。
- 次に、アプリを構成するサービスを docker-compose.yml で定義し、分離された環境で一緒に実行できるようにします。
- 最後にdocker-compose up コマンドを実行すると、Compose が起動してアプリケーション全体が実行されます。
Linux で Docker Compose を始める
Docker Compose は 2 つの方法でインストールできます。インストール手順は、次のリンクの「Docker Compose のインストール」 セクションで確認できます。
- Ubuntu に Docker をインストールする方法
- CentOS に Docker をインストールする方法
インストール後、次のコマンドを使用して Docker Compose のバージョンを確認します。
docker-compose -version
または、
docker-compose -v
または、
docker-compose --version
Docker Compose のバージョンを確認する
ヘルプを表示するには、次のコマンドを実行します。
docker-compose -help
このコマンドは、docker compose が実行できるコマンドをリストします。
Docker Compose ヘルプ
ここで、単純な docker compose ファイルを例として見てみましょう。これが私の作成ファイルの内容です。
サンプルの docker compose ファイル
上記の docker compose ファイルは、compose ファイル内の基本的な内容を理解するための最低限のファイルです。
次のコマンドを使用して、ファイルの有効性を確認できます。
docker-compose config
docker compose ファイルの有効性を確認する
docker compose ファイル内で間違ったバージョンを指定すると、エラー メッセージが表示されます。
Docker Compose ファイルのエラー メッセージ
次に、コマンドを使用して構成ファイルを実行しましょう。
docker-compose up -d
単一のコマンドですべてのサービスを開始します。
docker compose を実行する
構成ファイルによって作成された実行中のコンテナーをリストするには、次のコマンドを実行します。
docker-compose ps
実行中のDockerコンテナをリストする
次のコマンドでいつでもアプリケーションを停止できます。
docker-compose down
Dockerコンテナを停止する
別のポート (例: 8181) を nginx に割り当てることもできます。
これを行うには、次の図に示すように、構成ファイルでポートを定義するだけです。
nginxコンテナのポートを定義する
これで、nginx がポート 8181 に公開されました。コンテナを起動して、Nginx がポート 8181 で実行されているかどうかを確認してみましょう。
nginxコンテナを起動する
ブラウザを開いて、8181 ポートで実行されているかどうかを確認します。
Webブラウザでnginxコンテナをテストする
サービスをスケーリングしたい場合は、次のコマンドを使用して実行できます。
docker-compose up -d --scale database=3
docker compose を使用してサービスをスケールする
実行中のサービスを表示するには、次を実行します。
docker-compose top
docker compose を使用して実行中のサービスを表示する
止めるには、始めてください。サービス全体を一度に再起動する場合、コマンドは次のようになります。
docker-compose stop
docker-compose start
docker-compose restart
次のコマンドを使用してサービスのログを表示できます。
docker-compose logs
サービスのログを表示する
docker-compose でのネットワーキング
Docker Compose は、デフォルトでアプリに対して単一のネットワークを設定します。各コンテナはデフォルトのネットワークに参加し、コンテナはそのデフォルトのネットワーク上で通信できるようになります。
ただし、デフォルトのネットワークが不要な場合は、compose を使用して新しいネットワークを作成できます。
このガイドでは、次の 3 つのファイルを使用します。
- Dockerfile
- docker-compose.yml
- サーバー.py
Dockerfile の内容は次のとおりです。
dockerfileの内容
docker-compose.yml の内容:
Docker Compose ファイルの内容
server.py の内容:
アプリケーションファイルの内容
次のコマンドを使用してイメージをビルドします。
docker-compose build
ビルドが完了すると、次の出力が表示されます。
Docker イメージをビルドする
ご覧のとおり、イメージは正常に構築されています。次のコマンドを使用して確認できます。
docker images
Docker イメージの一覧表示
上記の出力にあるように、image1 という名前の Docker イメージが作成されます。
次に、構成ファイルを実行します。
docker-compose up -d
docker compose ファイルを実行する
次のコマンドを使用して、新しいネットワークが作成されたかどうかを確認します。
docker network ls
Dockerネットワークを確認する
上のスクリーンショットから、dc_network_my-network という名前の新しいネットワークが作成されたことが確認できます。
「docker ps」コマンドを使用して、コンテナーが実行されているかどうかを確認してみましょう。
docker ps
docker ps コマンドの出力
はい、コンテナは実行されています。
最後に、curl コマンドを使用してアプリケーション コード ファイル (server.py) を実行します。
curl localhost:15001
または、
curl 10.26.35.244:15001
アプリケーションの出力
ノード 1 から Hello World! という出力が取得され、server.py ファイルに書き込まれます。それは機能するという意味です!
推奨読書:
- Docker Run コマンドを Docker-Compose ファイルに変換する
- Docker ネットワーキングの概念の説明
- 例を使って Docker ボリュームを説明する
- 実行中の Docker コンテナを自動的に更新する方法
- ctop – Linux コンテナ用のコマンドライン監視ツール
- Porttainer – Docker を管理する最も簡単な方法
- PiCluster – シンプルな Web ベースの Docker 管理アプリケーション
- Dockly – ターミナルから Docker コンテナを管理
著者について:
Dhruv Tiwari 氏 は自動化が大好きな DevOps エンジニアで、Linux を大規模に操作し、システムが Linux ボックスにログインする必要がないほど賢くなる日を夢見ています。ソース コードからコードのデプロイメント、本番環境に至るまでの CI/CD の旅。
リソース:
- Docker Compose ドキュメント