はじめに
この実験では、Docker コンテナをリスト表示および管理するためにdocker container lsコマンド(docker psとしても知られる)を効果的に使用する方法を学びます。最初に現在実行中のコンテナのみをリスト表示し、その後停止したコンテナを含むすべてのコンテナを表示する方法を習得します。
さらに、ステータスや名前などのさまざまな条件に基づいてコンテナリストをフィルタリングする方法を探求し、特定のコンテナを素早く見つけることができるようになります。最後に、コンテナサイズなどの追加情報を表示したり、出力をニーズに合わせてフォーマットしたりする方法を学び、コンテナ環境を包括的に理解できるようになります。
実行中のコンテナをリスト表示
このステップでは、実行中の Docker コンテナをリスト表示する方法を学びます。docker psコマンドは、実行中のコンテナに関する情報を表示するために使用されます。
まず、実行状態を維持するシンプルなコンテナを起動しましょう。ubuntuイメージを使用し、コンテナを起動したままにするコマンドを実行します。
docker pull ubuntu
docker run -d ubuntu sleep infinity
docker pull ubuntuコマンドは、Docker Hub からubuntuイメージをダウンロードします。docker run -d ubuntu sleep infinityコマンドは、ubuntuイメージを基に新しいコンテナを実行します。
-dはコンテナをデタッチドモード(バックグラウンド)で実行しますubuntuはイメージ名ですsleep infinityはコンテナ内で実行されるコマンドで、コンテナを無期限に実行状態に保ちます
次に、docker psコマンドを使用して実行中のコンテナをリスト表示しましょう。
docker ps
このコマンドは、現在実行中のすべてのコンテナのリストを表示します。先ほど起動したubuntuコンテナが表示されるはずです。出力には、コンテナ ID、イメージ、コマンド、作成時刻、ステータス、ポート、名前などの情報が含まれます。
停止中のコンテナを含む全コンテナを表示
前のステップでは、docker psを使用して実行中のコンテナをリスト表示する方法を学びました。しかし、docker psは現在実行中のコンテナのみを表示します。停止したコンテナも含めてすべてのコンテナを表示するには、-aフラグを使用する必要があります。
まず、前のステップで起動したubuntuコンテナを停止しましょう。コンテナ ID または名前が必要になります。これはdocker psの出力から取得できます。
docker stop $(docker ps -q --filter ancestor=ubuntu)
docker stopコマンドは実行中のコンテナを停止します。
$(docker ps -q --filter ancestor=ubuntu)はコマンド置換で、ubuntuイメージに基づいて実行中のコンテナ ID を取得します。-qフラグはコンテナ ID のみを出力し、--filter ancestor=ubuntuはイメージ名でフィルタリングします
次に、docker ps -aを使用して停止済みのコンテナも含む全コンテナをリスト表示しましょう。
docker ps -a
このコマンドは、現在の状態(実行中、停止、終了など)に関係なく、作成されたすべてのコンテナのリストを表示します。ubuntuコンテナがリストに表示され、そのステータスは「Exited」となっているはずです。
ステータスと名前でコンテナをフィルタリング
このステップでは、docker psコマンドの--filterフラグを使用して、コンテナのリストをステータスや名前でフィルタリングする方法を学びます。多くのコンテナがある場合に特定のコンテナを見つける際に便利です。
まず、別のコンテナを起動しましょう。今回は特定の名前を付けます。
docker run -d --name my-nginx nginx
docker run -d --name my-nginx nginxコマンドは、nginxイメージを基に新しいコンテナをデタッチドモードで実行し、my-nginxという名前を割り当てます。
docker pull nginxは明示的に必要ありません。docker runはローカルにイメージがない場合自動的に取得します
次に、ステータスでフィルタリングして実行中のコンテナのみをリスト表示しましょう。
docker ps --filter status=running
このコマンドは現在「running」状態のコンテナのみを表示します。my-nginxコンテナがリストに表示されるはずです。
続いて、名前でコンテナをフィルタリングします。
docker ps -a --filter name=my-nginx
このコマンドは(-aにより停止済みも含む)my-nginxという名前のすべてのコンテナをリスト表示します。my-nginxコンテナがそのステータスと共に表示されるはずです。
フィルタを組み合わせることも可能です。例えば、特定の名前で実行中のコンテナをリスト表示する場合:
docker ps --filter status=running --filter name=my-nginx
これはmy-nginxコンテナが現在実行中の場合のみ表示します。
コンテナサイズの表示と出力フォーマット
このステップでは、コンテナのサイズを表示する方法とdocker psコマンドの出力をフォーマットする方法を学びます。コンテナのサイズを知ることは、ディスクスペース管理に役立ちます。
デフォルトでは、docker psはコンテナサイズを表示しません。サイズ情報を含めるには、--sizeフラグを使用します。
docker ps -a --size
このコマンドは(実行中・停止中を含む)すべてのコンテナをリスト表示し、サイズに関連する 2 つのカラムを含みます:SIZE(コンテナの書き込み可能レイヤーのサイズ)とVIRTUAL SIZE(イメージレイヤーを含むコンテナの合計サイズ)
docker psのデフォルト出力フォーマットが必ずしも必要に合わない場合があります。--formatフラグを使用して出力をフォーマットできます。このフラグは Go テンプレート文字列を受け取ります。
例えば、コンテナ ID、イメージ名、ステータスのみを表示するには次のコマンドを使用します:
docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}"
このフォーマット文字列では:
{{.ID}}はコンテナ ID を参照{{.Image}}はイメージ名を参照{{.Status}}はコンテナステータスを参照\tはカラム区切りのタブ文字
サイズ情報をフォーマット済み出力に含めることも可能です。
docker ps -a --format "{{.ID}}\t{{.Image}}\t{{.Status}}\t{{.Size}}"
このコマンドはコンテナ ID、イメージ、ステータス、サイズを表示します。{{.Size}}フィールドには書き込み可能レイヤーサイズと仮想サイズの両方が含まれます。
必要に応じて、フォーマット文字列の異なるフィールドを試して出力をカスタマイズできます。他に有用なフィールドには{{.Names}}、{{.CreatedAt}}、{{.Ports}}などがあります。
まとめ
この実験では、docker psコマンドを使用して Docker コンテナをリスト表示する方法を学びました。最初にデタッチドモードで簡単なubuntuコンテナを実行した後、docker psを使用して実行中のコンテナのみをリスト表示することから始めました。その後、以前に作成したコンテナを停止した後、docker psコマンドに-aフラグを追加することで、停止中のコンテナも含むすべてのコンテナを表示する方法を学びました。



