ウェブサイト検索

Linux で Docker Compose を始める


Docker Compose は、Linux でマルチコンテナ Docker アプリケーションを定義して実行するためのツールです。 Compose では、YAML ファイルを使用してアプリケーションのサービスを構成します。次に、1 つのコマンドで構成からすべてのサービスを作成して開始します。以下は、Docker compose がどのように機能するかを示す簡単な図です。

Docker compose の仕組み - グラフィカルな図解

Docker Compose は基本的に 3 段階のプロセスです。

  1. まず、 再度再利用できるようにDockerfile を使用してアプリケーション環境を定義する必要があります。
  2. 次に、アプリを構成するサービスを docker-compose.yml で定義し、分離された環境で一緒に実行できるようにします。
  3. 最後に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 つのファイルを使用します。

  1. Dockerfile
  2. docker-compose.yml
  3. サーバー.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 ドキュメント

関連記事