はじめに
この実験では、Docker コンテナ内で実行中のプロセスを表示するdocker compose top
コマンドの使用方法を学びます。まず、サービスを定義するシンプルなdocker-compose.yml
ファイルを準備し、Docker Compose を使用してサービスを起動します。最後に、docker compose top
コマンドを一般的な方法と特定のサービス名を指定して使用し、コンテナ内で実行中のプロセスを確認します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Docker コンテナ内で実行中のプロセスを表示するdocker compose top
コマンドの使用方法を学びます。まず、サービスを定義するシンプルなdocker-compose.yml
ファイルを準備し、Docker Compose を使用してサービスを起動します。最後に、docker compose top
コマンドを一般的な方法と特定のサービス名を指定して使用し、コンテナ内で実行中のプロセスを確認します。
このステップでは、シンプルなdocker-compose.yml
ファイルを準備します。始める前に、Docker Compose について理解しましょう。Docker Compose は、マルチコンテナ Docker アプリケーションを定義・実行するためのツールです。Compose では YAML ファイルを使用してアプリケーションのサービスを設定し、単一のコマンドで設定からすべてのサービスを作成・起動できます。
LabEx 環境には Docker Compose がプリインストールされていないため、まずインストールする必要があります。Docker Compose バイナリをダウンロードし、実行可能にします。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Docker Compose がインストールされたので、~/project
ディレクトリにシンプルなdocker-compose.yml
ファイルを作成します。このファイルはubuntu
イメージを使用し、sleep infinity
コマンドを実行してコンテナを稼働状態に保つ単一サービスを定義します。
nano
エディタを使用してファイルを作成・編集します。
nano ~/project/docker-compose.yml
nano
エディタで以下の内容を貼り付けます:
version: "3.8"
services:
ubuntu_service:
image: ubuntu
command: sleep infinity
このdocker-compose.yml
ファイルの内容を解説します:
version: '3.8'
- Compose ファイルフォーマットのバージョンを指定services:
- アプリケーションのサービスを定義ubuntu_service:
- サービス名(任意の名前を選択可能)image: ubuntu
- 使用する Docker イメージ(公式ubuntu
イメージを使用)command: sleep infinity
- コンテナ起動時に実行するコマンド(コンテナを永続的に稼働)内容を貼り付けた後、Ctrl + X
、Y
で確認、Enter
でデフォルトファイル名docker-compose.yml
として保存します。
ubuntu
イメージが利用可能か確認するため、docker pull
コマンドで手動で取得します。これは Docker Compose でサービスを開始する前にイメージを準備する良い方法です。
docker pull ubuntu
ubuntu
イメージが取得される様子が表示されます。
このステップでは、前のステップで作成したdocker-compose.yml
ファイルに定義されたサービスを起動します。これにはdocker compose up
コマンドを使用します。
まず、docker-compose.yml
ファイルを保存したディレクトリ(~/project
)に移動します。
cd ~/project
次に、docker compose up
コマンドを実行します。-d
フラグを付けるとコンテナがデタッチドモード(バックグラウンド)で実行され、ターミナルがブロックされません。
docker compose up -d
サービスが作成・起動される様子が表示されます。Docker Compose はネットワーク、ボリューム(このシンプルな例では定義していません)、そしてubuntu_service
用のコンテナを作成します。
コンテナが実行中か確認するには、docker ps
コマンドを使用します。
docker ps
ubuntu
イメージとsleep infinity
コマンドが指定されたコンテナが表示され、ステータスはUp
になっているはずです。コンテナ名にはディレクトリ名(この場合はproject
)とサービス名(ubuntu_service
)がプレフィックスとして付与されます。
このステップでは、docker compose top
コマンドを使用して、Docker Compose で管理されているコンテナ内で実行中のプロセスを表示します。このコマンドは Linux のtop
コマンドに似ていますが、コンテナ内で実行中のプロセスを表示します。
まず、docker-compose.yml
ファイルがある~/project
ディレクトリにいることを確認してください。
cd ~/project
次に、docker compose top
コマンドを実行します。
docker compose top
以下のような出力が表示されます:
ID NAME PID COMMAND ELAPSED
<container_id> project-ubuntu_service-1 <pid> sleep infinity <time>
この出力は、docker-compose.yml
ファイルで管理されている各コンテナ内で実行中のプロセスを示しています。今回のケースでは、1 つのサービス(ubuntu_service
)しかなく、実行中のプロセスはdocker-compose.yml
ファイルで指定したsleep infinity
コマンドのみです。
出力には以下の情報が含まれます:
ID
: コンテナ IDNAME
: コンテナ名(通常<ディレクトリ名>-<サービス名>-<インスタンス番号>
の形式)PID
: コンテナ内で実行中のコマンドのプロセス IDCOMMAND
: コンテナ内で実行中のコマンドELAPSED
: コマンド開始からの経過時間このコマンドは、コンテナ内で何が実行されているかを確認したり、問題をトラブルシューティングしたりするのに便利です。
このステップでは、docker compose top
コマンドを使用して、docker-compose.yml
ファイルで定義された特定のサービスのプロセスを表示する方法を学びます。複数のサービスが実行されている場合に、特定のサービスのプロセスのみを確認したい場合に便利です。
まず、~/project
ディレクトリにいることを確認してください。
cd ~/project
特定のサービスのプロセスを表示するには、docker compose top
コマンドにサービス名を追加します。今回のdocker-compose.yml
ファイルでは、サービス名はubuntu_service
です。
docker compose top ubuntu_service
前のステップと同様の出力が表示されますが、今回はubuntu_service
コンテナのプロセスのみが表示されます:
ID NAME PID COMMAND ELAPSED
<container_id> project-ubuntu_service-1 <pid> sleep infinity <time>
docker-compose.yml
ファイルに他のサービスが定義されており、それらが実行されている場合、サービス名を指定せずにdocker compose top
を実行すると、すべてのサービスのプロセスが表示されます。ubuntu_service
を指定することで、その特定のサービスのコンテナ内のプロセスのみを表示するように出力をフィルタリングしています。
このターゲットを絞ったアプローチは、マルチコンテナアプリケーションの個々のコンポーネントをデバッグしたり監視したりするのに役立ちます。
この実験では、Docker Compose で管理される Docker コンテナ内で実行中のプロセスを表示するdocker compose top
コマンドの使用方法を学びました。まず、Docker Compose をインストールし、ubuntu
イメージを使用してsleep infinity
コマンドでコンテナを実行し続けるサービスを定義したシンプルなdocker-compose.yml
ファイルを準備しました。
準備が完了した後、docker-compose.yml
ファイルで定義されたサービスを起動しました。最後に、docker compose top
コマンドの使用方法を探求し、最初にすべてのサービスで実行中のプロセスを表示し、次にサービス名を指定して単一サービスのプロセスのみを表示しました。この実践的な経験を通じて、Docker Compose で管理されるコンテナ内で実行中のプロセスを検査する方法を実証しました。