docker container top コマンドでコンテナプロセスを確認する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Docker コンテナ内で実行中のプロセスを調査するためにdocker container topコマンドを使用する方法を学びます。まず、実行環境を準備するためにシンプルなコンテナを起動します。

その後、docker container topコマンドを使用してコンテナ内のアクティブなプロセスを確認します。最後に、さまざまなpsオプションと組み合わせてdocker container topを使用し、出力をカスタマイズしてコンテナプロセスの詳細情報を取得する方法を探ります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/top("Display Running Processes in Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555125{{"docker container top コマンドでコンテナプロセスを確認する方法"}} docker/ps -.-> lab-555125{{"docker container top コマンドでコンテナプロセスを確認する方法"}} docker/top -.-> lab-555125{{"docker container top コマンドでコンテナプロセスを確認する方法"}} docker/pull -.-> lab-555125{{"docker container top コマンドでコンテナプロセスを確認する方法"}} end

シンプルなコンテナの起動

このステップでは、シンプルな Docker コンテナを起動する方法を学びます。Docker コンテナは軽量でポータブル、かつ自己完結型のユニットであり、アプリケーションを実行するために必要なすべてを含んでいます。

まず、Docker Hub からhello-worldイメージをプルしましょう。これは Docker が正しく動作しているかテストするためによく使われる非常に小さなイメージです。

docker pull hello-world

イメージがプルされ、展開されることを示す出力が表示されるはずです。

次に、hello-worldイメージを基にコンテナを実行します。

docker run hello-world

このコマンドを実行すると、Docker はhello-worldイメージから新しいコンテナを作成し、イメージ内で定義されたコマンドを実行します。hello-worldイメージはコンソールにメッセージを表示して終了するように設計されています。

以下のような出力が表示されるはずです:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To discover more examples and ideas, visit:
 https://docs.docker.com/get-started/

この出力は、LabEx VM 上に Docker が正しくインストールされ動作していることを確認します。docker runコマンドはコンテナを作成して起動し、そのコンテナはタスクを実行して終了しました。

docker container top で実行中のプロセスを確認

このステップでは、docker container top コマンドを使用して Docker コンテナ内で実行中のプロセスを確認する方法を学びます。このコマンドは Linux システムの top コマンドと似ていますが、特定のコンテナ内で実行されているプロセスを表示します。

まず、実行中のコンテナが必要です。シンプルな ubuntu コンテナを起動し、バックグラウンドで実行させましょう。-d フラグを使用してデタッチドモードでコンテナを実行し、sleep infinity コマンドでコンテナを維持します。

docker run -d ubuntu sleep infinity

コンソールに長い文字列が表示されます。これはコンテナ ID です。

次に、docker container top に続けてコンテナ ID または名前を指定し、このコンテナ内で実行中のプロセスを確認します。コンテナ ID は docker ps を実行して取得できます。

docker ps

出力から CONTAINER ID をコピーし、以下のコマンドの <container_id> を実際の ID に置き換えてください:

docker container top <container_id>

コンテナ内で実行中の sleep infinity プロセスを示す、以下のような出力が表示されるはずです:

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                7345                7331                0                   14:55               ?                   00:00:00            sleep infinity

この出力には、指定したコンテナ内で実行中のプロセスに関する情報が表示されます。ユーザーID (UID)、プロセス ID (PID)、親プロセス ID (PPID)、CPU 使用率 (C)、開始時刻 (STIME)、制御端末 (TTY)、累積 CPU 時間 (TIME)、実行中のコマンド (CMD) が含まれます。このケースでは、メインプロセスは sleep infinity です。

docker container top で ps オプションを使用する

このステップでは、docker container top コマンドに ps オプションを組み合わせて、出力をカスタマイズしコンテナ内の特定のプロセス情報を表示する方法を学びます。docker container top コマンドは標準的な ps オプションを受け付け、表示する列やフォーマットを制御できます。

まず、前のステップで起動したコンテナが実行中であることを確認します。docker ps を実行して確認できます。

docker ps

実行中の ubuntu コンテナの CONTAINER ID をコピーしてください。

次に、いくつかの ps オプションを付けて docker container top を使用します。例えば、プロセス ID (pid) とコマンド (cmd) のみを表示するには、-o オプションの後に表示したい列を指定します。<container_id> は実際のコンテナ ID に置き換えてください。

docker container top pid,cmd < container_id > -o

PID と CMD 列のみが表示された、以下のような出力が得られるはずです:

PID                 CMD
7345                sleep infinity

様々な ps オプションを使用して異なる情報を取得できます。例えば、CPU 使用率 (%cpu) とメモリ使用率 (%mem) を表示するには:

docker container top pid,%cpu,%mem,cmd < container_id > -o

この場合、コンテナ内のプロセスに関する CPU とメモリ使用率が出力に含まれます:

PID                 %CPU                %MEM                CMD
7345                0.0                 0.0                 sleep infinity

利用可能なオプションの完全なリストについては、ps コマンドのドキュメントを参照してください。docker container topps オプションを組み合わせることで、コンテナ内で実行中のプロセスを柔軟に監視し、問題のトラブルシューティングが可能になります。

まとめ

この実験では、Docker コンテナとの基本的な操作方法を学びました。まずシンプルなhello-worldイメージをプルして実行し、Docker のインストールをテストするとともに、docker pulldocker runというコアコマンドの使い方を確認しました。この最初のステップでは、Docker がイメージを取得し、定義済みのタスクを実行するためにコンテナを作成する仕組みを理解しました。

続いて、docker container topコマンドについて学びました。完全な内容は記載されていませんが、ステップのタイトルから、標準的な Linux 環境におけるtopコマンドと同様に、コンテナ内で実行中のプロセスを検査する方法を学んだことがわかります。最後のステップ「docker container top で ps オプションを使用する」では、docker container topのさらなる機能を探求し、おそらくpsコマンドと同様のオプションを使用して出力をカスタマイズする方法を実践したものと考えられます。