はじめに
この実験では、Docker コンテナをリスト表示および管理するためにdocker container lsコマンド(docker psとしても知られる)を効果的に使用する方法を学びます。まずは現在実行中のコンテナをリスト表示し、その後停止中のコンテナも含めて表示する方法を習得します。
さらに、ステータスや名前などの様々な条件に基づいてコンテナリストをフィルタリングする方法や、必要な特定の情報のみを表示するための出力フォーマット方法について探求します。最後に、コンテナのディスク使用量を素早く確認する方法を発見します。
実行中のコンテナを一覧表示
このステップでは、現在実行中の Docker コンテナを一覧表示する方法を学びます。これはコンテナを管理し、システム上で何がアクティブになっているかを理解するための基本的なコマンドです。
まず、コンテナを実行するために使用できるシンプルなイメージをプルしましょう。Docker インストールをテストするために設計された非常に小さなイメージであるhello-worldを使用します。
docker pull hello-world
イメージがプルされ、展開されていることを示す出力が表示されるはずです。
次に、このイメージを使用してコンテナを実行しましょう。docker runコマンドは新しいコンテナを作成して起動します。
docker run hello-world
このコマンドはhello-worldコンテナを実行します。コンテナはメッセージを表示した後、終了します。終了した後でも、システム上に存在するコンテナと見なされますが、実行中ではありません。
現在実行中のコンテナのみを表示するには、docker psコマンドを使用します。
docker ps
hello-worldコンテナは実行後すぐに終了するため、docker psコマンドは「CONTAINER ID」、「IMAGE」、「COMMAND」などの列の下に出力を表示しない可能性があります。現在実行中のコンテナがないためです。
次に、実行状態を維持するコンテナを実行しましょう。ubuntuイメージを使用し、コンテナを生き続けさせる簡単なコマンドを実行します。まず、ubuntuイメージをプルします。
docker pull ubuntu
次に、sleep infinityコマンドを実行して Ubuntu コンテナを実行状態に保ちます。-dフラグはコンテナをデタッチモード(バックグラウンド)で実行します。
docker run -d ubuntu sleep infinity
コンテナ ID を示す長い文字列が表示されます。これはコンテナがバックグラウンドで起動されたことを示しています。
再度docker psを実行して、実行中のコンテナを確認します。
docker ps
今度は、先ほど起動した Ubuntu コンテナが一覧表示されるはずです。出力には、コンテナ ID、使用されたイメージ、実行中のコマンド、作成時刻、ステータス、ポート、およびランダムに生成された名前などの情報が含まれます。
docker psコマンドは、システム上でどのコンテナがアクティブでリソースを消費しているかを素早く確認するために不可欠です。
停止中のコンテナを含む全コンテナを表示
前のステップでは、docker psを使用して実行中のコンテナのみを一覧表示する方法を学びました。しかし、停止したコンテナも含め、システム上に存在する全てのコンテナを確認したい場合があります。これは古いコンテナをクリーンアップしたり、エラーで終了したコンテナを調査したりする際に便利です。
実行中および停止中の全てのコンテナを一覧表示するには、docker psコマンドに-aフラグを追加します。-aは「全て (all)」を意味します。
それではこのコマンドを試してみましょう。
docker ps -a
前のステップで作成した実行中の Ubuntu コンテナと、実行後に終了したhello-worldコンテナが一覧表示されるはずです。「STATUS」列には、コンテナが「Up」(実行中) か「Exited」(終了済み) かが表示されます。
出力にはdocker psと同じ情報 (コンテナ ID、イメージ、コマンド、作成時刻、ステータス、ポート、名前) が含まれますが、現在の状態に関係なく全てのコンテナが対象となります。
このコマンドは、システム上の全てのコンテナを完全に把握するのに非常に役立ちます。現在アクティブでない場合でも、作成されたコンテナを確認することができます。
ステータスと名前でコンテナをフィルタリング
このステップでは、コンテナの状態や名前に基づいて一覧をフィルタリングする方法を学びます。多くのコンテナがある場合に特定のサブセットのみを表示したいときに非常に便利です。
docker psコマンドは--filterフラグをサポートしており、コンテナをリストアップする基準を指定できます。
まず、フィルタを使用して実行中のコンテナのみを表示してみましょう。実行中のコンテナのステータスはrunningです。
docker ps --filter "status=running"
このコマンドはステップ 1 のdocker psと同じ出力を表示し、現在実行中の Ubuntu コンテナのみがリストされます。
次に、終了したコンテナをフィルタリングしてみましょう。終了したコンテナのステータスはexitedです。-aフラグを付けて全てのコンテナを表示することを忘れないでください。そうしないと、デフォルトで表示されない終了済みコンテナはフィルタで見つかりません。
docker ps -a --filter "status=exited"
このコマンドはステップ 1 で実行したhello-worldコンテナを表示するはずです。そのステータスは「Exited」になっています。
コンテナ名でフィルタリングすることもできます。--nameフラグを使用せずにコンテナを実行すると、Docker はランダムな名前を割り当てます。実行中の Ubuntu コンテナの名前はdocker psを実行して「NAMES」列で確認できます。
例えば、Ubuntu コンテナの名前がagitated_hooverのような場合、この名前でフィルタリングできます:
docker ps -a --filter "name=agitated_hoover"
agitated_hooverは実際の Ubuntu コンテナの名前に置き換えてください。このコマンドは、その特定の名前のコンテナをステータスに関係なくリストします(この場合は実行中のはずです)。
フィルタを組み合わせることも可能です。例えば、特定の名前の実行中コンテナを検索するには:
docker ps --filter "status=running" --filter "name=agitated_hoover"
ここでもagitated_hooverはコンテナの実際の名前に置き換えてください。
フィルタリングは、特に多くのコンテナがある環境でコンテナを管理・検査する強力な方法です。
特定情報を表示する出力フォーマット
このステップでは、docker psコマンドの出力をカスタマイズして必要な情報のみを表示する方法を学びます。これはスクリプト作成時や、コンテナ情報を簡潔に確認したい場合に特に便利です。
docker psコマンドは--formatフラグをサポートしており、Go テンプレート構文を使用して出力形式を指定できます。
まず、全てのコンテナのコンテナ ID のみをリスト表示してみましょう。
docker ps -a --format "{{.ID}}"
このコマンドは、全てのコンテナ(実行中および停止中)のコンテナ ID を 1 行ずつ出力します。{{.ID}}はコンテナ ID を表す Go テンプレートのプレースホルダーです。
次に、コンテナ ID とイメージ名をタブ区切りで表示します。
docker ps -a --format "{{.ID}}\t{{.Image}}"
各コンテナに対して[コンテナID] [イメージ名]のような出力が表示されます。\tは Go テンプレート内のタブ文字を表します。
他のフィールドも含めることができます。以下は使用可能な一般的なフィールドです:
.ID: コンテナ ID.Image: イメージ名.Command: 実行中のコマンド.CreatedAt: 作成時刻.Status: コンテナの状態.Ports: 公開ポート.Names: コンテナ名
コンテナ名とその状態をリスト表示してみましょう。
docker ps -a --format "{{.Names}}: {{.Status}}"
各コンテナに対して[コンテナ名]: [状態]のような形式で出力されます。
tableフォーマットを使用すると、ヘッダー付きで読みやすい出力を得ることができます。これはデフォルトの出力に似ていますが、指定した列のみが表示されます。
docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"
このコマンドは、全てのコンテナの ID、イメージ、名前、状態を列にした表を表示します。
出力をフォーマットすることで、docker psが表示する情報を細かく制御でき、スクリプトでの解析や特定のレポートニーズに合わせて使いやすくなります。
コンテナのディスク使用量を表示
この最終ステップでは、Docker コンテナ、イメージ、ボリュームが使用しているディスク容量を確認する方法を学びます。システムリソースを監視し、Docker によってディスク容量が消費されている箇所を特定するために重要です。
docker system dfコマンドは、Docker オブジェクトが使用しているディスク容量の概要を提供します。dfは標準 Linux コマンドと同様に「disk free」を意味します。
ディスク使用量を確認するためにコマンドを実行してみましょう。
docker system df
出力には以下の概要が表示されます:
- Images: システム上の全 Docker イメージの合計サイズ
- Containers: 全コンテナの書き込み可能レイヤーの合計サイズ(コンテナのファイルシステム内で行われた変更によって使用される領域)
- Local Volumes: 全ローカルボリュームの合計サイズ(永続的なデータストレージに使用)
- Build Cache: イメージビルド時に使用されるビルドキャッシュのサイズ
"Total"、"Active"、"Size"、"Reclaimable"といった列が表示されます:
- Total: オブジェクトの総数または総サイズ
- Active: 現在使用中のオブジェクト数(実行中のコンテナ、実行中のコンテナで使用されているイメージなど)
- Size: オブジェクトが消費している総ディスク容量
- Reclaimable: 未使用オブジェクトを削除することで解放可能なディスク容量
より詳細な情報を取得するには、-vフラグを使用して詳細出力を表示します。
docker system df -v
これにより、個々のイメージ、コンテナ、ボリュームとそれぞれのサイズを含むより詳細な内訳が表示されます。
Docker のディスク使用状況を理解することは、健全な Docker 環境を維持し、ディスクが満杯になるのを防ぐために重要です。docker system dfの情報を使用して、未使用のイメージ、コンテナ、ボリュームをクリーンアップするタイミングを判断できます。
まとめ
この実験では、docker container lsコマンド(docker psとしても知られる)を使用して Docker コンテナを一覧表示する方法を学びました。最初にdocker psを使用して実行中のコンテナのみを表示し、その後-aフラグを追加することで停止中のコンテナも含めた全コンテナを表示する方法を習得しました。
さらに、--filterオプションを使用してステータスや名前などの条件に基づいてコンテナリストをフィルタリングする方法を探求しました。また、--formatフラグで特定の情報を表示するために出力形式をカスタマイズする方法と、docker system dfコマンドでコンテナのディスク使用量を確認する方法も学びました。



