Dockerコンテナ一覧:コマンド、確認方法、状態別表示を徹底解説

Dockerコンテナ一覧:コマンド、確認方法、状態別表示を徹底解説

Dockerは、アプリケーションをコンテナと呼ばれる軽量な仮想化環境にパッケージ化し、配布・実行するためのプラットフォームです。Dockerコンテナは、開発環境、テスト環境、本番環境を問わず、一貫した環境でアプリケーションを実行することを可能にします。

Dockerコンテナを効率的に管理するためには、コンテナの状態を把握することが重要です。Dockerコンテナ一覧を表示することで、実行中のコンテナ、停止中のコンテナ、過去に実行されたコンテナなど、すべてのコンテナの状態を確認できます。

この記事では、Dockerコンテナ一覧を表示するためのコマンド、確認方法、そして状態別の表示方法を徹底的に解説します。Docker初心者から上級者まで、コンテナ管理に必要な知識を網羅的に提供し、あなたのDockerライフをより快適にするお手伝いをします。

目次

  1. Dockerコンテナ一覧を表示する基本コマンド:docker ps
    • docker psコマンドの基本的な使い方
    • docker psコマンドのオプション一覧
    • -aオプション:停止中のコンテナを含むすべてのコンテナを表示
    • -qオプション:コンテナIDのみを表示
    • -sオプション:コンテナのサイズを表示
    • --formatオプション:出力形式をカスタマイズ
    • --filterオプション:特定の条件に合致するコンテナのみを表示
  2. Dockerコンテナの状態について
    • 実行中 (running)
    • 停止中 (exited)
    • 再起動中 (restarting)
    • 一時停止中 (paused)
    • 作成済み (created)
    • デッド (dead)
    • 各状態の意味と、コンテナ管理における重要性
  3. 状態別のDockerコンテナ一覧表示方法
    • 実行中のコンテナのみ表示:docker ps
    • 停止中のコンテナのみ表示:docker ps -a --filter "status=exited"
    • 特定の状態のコンテナを絞り込む:--filterオプションの活用
    • 複数の状態のコンテナを同時に表示:--filterオプションの組み合わせ
  4. コンテナ一覧の情報をより詳細に表示する
    • docker inspectコマンド:コンテナの詳細情報をJSON形式で表示
    • docker statsコマンド:コンテナのリソース使用状況をリアルタイムで表示
    • docker topコマンド:コンテナ内で実行中のプロセスを表示
  5. Docker Composeによるコンテナ一覧表示
    • Docker Composeの概要と利点
    • docker-compose psコマンド:Composeアプリケーションのコンテナ一覧を表示
    • Docker Composeにおけるコンテナの状態管理
  6. Docker Desktopによるコンテナ一覧表示
    • Docker Desktopの概要とインストール
    • Docker DesktopのGUIによるコンテナ一覧表示
    • Docker DesktopのGUIによるコンテナ管理機能
  7. コンテナ一覧を活用した効率的なコンテナ管理
    • 不要なコンテナの削除:docker rmコマンド
    • 停止中のコンテナの起動:docker startコマンド
    • 実行中のコンテナの停止:docker stopコマンド
    • コンテナのリソース制限設定
  8. トラブルシューティング:コンテナ一覧が表示されない場合の対処法
    • Dockerデーモンが起動しているか確認
    • 権限の問題
    • ネットワークの問題
  9. まとめ:Dockerコンテナ一覧をマスターして、より効率的なコンテナ管理を実現

1. Dockerコンテナ一覧を表示する基本コマンド:docker ps

docker psコマンドは、Dockerコンテナの状態を確認するための最も基本的なコマンドです。このコマンドを使用することで、実行中のコンテナに関する情報を一覧表示できます。

1.1 docker psコマンドの基本的な使い方

ターミナルまたはコマンドプロンプトでdocker psと入力し、Enterキーを押すだけで、実行中のコンテナの一覧が表示されます。

bash
docker ps

出力例:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 days ago Up 2 days 0.0.0.0:80->80/tcp webserver
g7h8i9j0k1l2 redis "docker-entrypoint.s…" 3 days ago Up 3 days 6379/tcp cache

この出力は、以下の情報を示しています。

  • CONTAINER ID: コンテナの一意な識別子
  • IMAGE: コンテナの作成に使用されたイメージ名
  • COMMAND: コンテナ内で実行されているコマンド
  • CREATED: コンテナが作成された日時
  • STATUS: コンテナの状態(例:Up、Exited)
  • PORTS: コンテナが公開しているポートと、ホストマシンにマッピングされているポート
  • NAMES: コンテナの名前

1.2 docker psコマンドのオプション一覧

docker psコマンドには、様々なオプションがあり、表示する情報をカスタマイズできます。以下は主要なオプションの一覧です。

オプション 説明
-a 停止中のコンテナを含むすべてのコンテナを表示
-q コンテナIDのみを表示
-s コンテナのサイズを表示
--format 出力形式をカスタマイズ
--filter 特定の条件に合致するコンテナのみを表示
-n 最後に作成されたN個のコンテナを表示
--no-trunc コンテナIDなどの情報を省略せずにすべて表示
-l 最後に作成されたコンテナの情報を表示
--latest 最新のコンテナ情報を表示

1.3 -aオプション:停止中のコンテナを含むすべてのコンテナを表示

デフォルトでは、docker psコマンドは実行中のコンテナのみを表示します。停止中のコンテナも含めてすべてのコンテナを表示するには、-aオプションを使用します。

bash
docker ps -a

このコマンドを実行すると、STATUS欄にExitedと表示されているコンテナも表示されます。過去に実行されたコンテナや、エラーで停止したコンテナなどを確認する際に役立ちます。

1.4 -qオプション:コンテナIDのみを表示

コンテナIDのみを簡潔に表示したい場合は、-qオプションを使用します。これは、他のコマンドと組み合わせてコンテナを一括操作する場合に便利です。

bash
docker ps -q

出力例:

a1b2c3d4e5f6
g7h8i9j0k1l2

例えば、すべての停止中のコンテナを削除するには、以下のようにコマンドを組み合わせます。

bash
docker rm $(docker ps -a -q -f status=exited)

1.5 -sオプション:コンテナのサイズを表示

コンテナのサイズ(仮想サイズと読み書き可能なレイヤーのサイズ)を表示するには、-sオプションを使用します。

bash
docker ps -s

出力例:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
a1b2c3d4e5f6 nginx "nginx -g 'daemon of…" 2 days ago Up 2 days 0.0.0.0:80->80/tcp webserver 132MB (virtual 133MB)
g7h8i9j0k1l2 redis "docker-entrypoint.s…" 3 days ago Up 3 days 6379/tcp cache 11.7MB (virtual 108MB)

SIZE欄にコンテナのサイズが表示されます。仮想サイズは、ベースイメージのサイズに、コンテナ内で変更されたファイルや追加されたレイヤーのサイズを加えたものです。

1.6 --formatオプション:出力形式をカスタマイズ

--formatオプションを使用すると、コンテナ一覧の出力形式を自由にカスタマイズできます。Go言語のテンプレート構文を使用します。

bash
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"

このコマンドは、コンテナID、名前、状態をタブ区切りで表示します。tableキーワードを使用すると、表形式で表示されます。

利用可能なフィールドは以下の通りです。

  • .ID: コンテナID
  • .Image: イメージ名
  • .Command: コマンド
  • .CreatedAt: 作成日時
  • .RunningFor: 稼働時間
  • .Ports: ポート
  • .Names: コンテナ名
  • .Labels: ラベル
  • .Mounts: マウント
  • .State: 状態
  • .Status: 状態 (詳細)
  • .Size: サイズ

1.7 --filterオプション:特定の条件に合致するコンテナのみを表示

--filterオプションを使用すると、特定の条件に合致するコンテナのみを表示できます。複数のフィルタを組み合わせることも可能です。

bash
docker ps --filter "name=webserver"

このコマンドは、名前がwebserverであるコンテナのみを表示します。

利用可能なフィルタは以下の通りです。

  • ancestor: 特定のイメージを元に作成されたコンテナ
  • before: 特定のコンテナIDよりも前に作成されたコンテナ
  • exited: 特定の終了コードで終了したコンテナ
  • health: ヘルスチェックの状態 (starting, healthy, unhealthy)
  • id: コンテナID
  • is-task: Docker Swarmタスクであるかどうか (true, false)
  • label: ラベル (例: label=com.example.version=1.0)
  • name: コンテナ名
  • network: コンテナが接続されているネットワーク名
  • port: コンテナが公開しているポート
  • since: 特定のコンテナIDよりも後に作成されたコンテナ
  • status: コンテナの状態 (created, restarting, running, removing, paused, exited, dead)
  • volume: コンテナがマウントしているボリューム名

2. Dockerコンテナの状態について

Dockerコンテナは、ライフサイクルの中で様々な状態を経ます。各状態を理解することは、コンテナを効果的に管理するために非常に重要です。

2.1 実行中 (running)

コンテナが正常に起動し、指定されたプロセスが実行されている状態です。この状態のコンテナは、通常、ネットワークポートを公開し、外部からのアクセスを受け付けることができます。

2.2 停止中 (exited)

コンテナ内で実行されていたプロセスが終了した状態です。プロセスが正常に終了した場合も、エラーで終了した場合も、この状態になります。停止中のコンテナは、-aオプションを付けてdocker psコマンドを実行することで確認できます。

2.3 再起動中 (restarting)

コンテナが予期せぬ理由で停止し、Dockerデーモンが自動的にコンテナを再起動しようとしている状態です。Docker run時に--restartオプションを指定することで、再起動ポリシーを設定できます。

2.4 一時停止中 (paused)

docker pauseコマンドによって、コンテナ内のすべてのプロセスが一時的に停止された状態です。コンテナはメモリに保持されたまま、CPUリソースを消費しません。docker unpauseコマンドで再開できます。

2.5 作成済み (created)

コンテナがdocker createコマンドで作成されたものの、まだ起動されていない状態です。docker startコマンドで起動できます。

2.6 デッド (dead)

コンテナが致命的なエラーで停止し、再起動もできない状態です。通常、この状態のコンテナは削除する必要があります。

2.7 各状態の意味と、コンテナ管理における重要性

各状態を理解することで、コンテナの状態を把握し、適切なアクションを実行できます。例えば、停止中のコンテナを起動したり、不要なコンテナを削除したり、再起動を繰り返すコンテナの原因を調査したりすることができます。

3. 状態別のDockerコンテナ一覧表示方法

docker psコマンドと--filterオプションを組み合わせることで、特定の状態のコンテナのみを表示できます。

3.1 実行中のコンテナのみ表示:docker ps

これは、docker psコマンドのデフォルトの動作です。

bash
docker ps

3.2 停止中のコンテナのみ表示:docker ps -a --filter "status=exited"

-aオプションと--filter "status=exited"オプションを組み合わせることで、停止中のコンテナのみを表示できます。

bash
docker ps -a --filter "status=exited"

3.3 特定の状態のコンテナを絞り込む:--filterオプションの活用

--filterオプションを使用することで、様々な状態のコンテナを絞り込むことができます。

bash
docker ps -a --filter "status=created" # 作成済みのコンテナを表示
docker ps -a --filter "status=restarting" # 再起動中のコンテナを表示
docker ps -a --filter "status=paused" # 一時停止中のコンテナを表示
docker ps -a --filter "status=dead" # デッド状態のコンテナを表示

3.4 複数の状態のコンテナを同時に表示:--filterオプションの組み合わせ

複数の--filterオプションを使用するか、or演算子を使用して、複数の状態のコンテナを同時に表示できます。

bash
docker ps -a --filter "status=exited" --filter "status=dead" # 停止中とデッド状態のコンテナを表示 (複数の--filter)
docker ps -a --filter "status=exited" --filter "status=dead" # これは誤り。 AND条件になるため、同時にはexited かつ dead はあり得ないので何も表示されない
docker ps -a --filter "status=exited OR status=dead" #停止中かデッド状態のコンテナを表示 (OR演算子)

docker CLI で OR 演算子を使う方法はなく、上記例で示した --filter を複数指定するやり方は AND 条件になります。

OR条件を実現するためには awkgrep などの外部コマンドを組み合わせる必要があります。

例えば、以下のように grep コマンドを使用することができます。

bash
docker ps -a | grep -E "Exited|Dead"

このコマンドは、docker ps -a の出力を grep コマンドにパイプし、Exited または Dead の文字列を含む行を抽出します。

4. コンテナ一覧の情報をより詳細に表示する

docker psコマンド以外にも、コンテナの情報を詳細に表示するためのコマンドがあります。

4.1 docker inspectコマンド:コンテナの詳細情報をJSON形式で表示

docker inspectコマンドは、コンテナの詳細情報をJSON形式で表示します。コンテナのIDまたは名前を指定する必要があります。

bash
docker inspect <container_id_or_name>

例えば、webserverという名前のコンテナの詳細情報を表示するには、以下のように実行します。

bash
docker inspect webserver

出力は非常に詳細で、ネットワーク設定、ボリュームマウント、環境変数など、コンテナに関するあらゆる情報が含まれています。

4.2 docker statsコマンド:コンテナのリソース使用状況をリアルタイムで表示

docker statsコマンドは、コンテナのCPU使用率、メモリ使用量、ネットワークI/O、ブロックI/Oなどのリソース使用状況をリアルタイムで表示します。

bash
docker stats

特定のコンテナのみを監視する場合は、コンテナIDまたは名前を指定します。

bash
docker stats webserver

4.3 docker topコマンド:コンテナ内で実行中のプロセスを表示

docker topコマンドは、コンテナ内で実行中のプロセスを表示します。Linuxのtopコマンドと同様の情報を取得できます。

bash
docker top <container_id_or_name>

例えば、webserverという名前のコンテナ内で実行中のプロセスを表示するには、以下のように実行します。

bash
docker top webserver

5. Docker Composeによるコンテナ一覧表示

5.1 Docker Composeの概要と利点

Docker Composeは、複数のコンテナをまとめて定義し、管理するためのツールです。Composeファイルと呼ばれるYAMLファイルに、アプリケーションを構成するコンテナ、ネットワーク、ボリュームなどを記述します。

Docker Composeを使用することで、複雑なアプリケーションを簡単にデプロイ・管理できます。コンテナ間の依存関係を定義したり、環境変数を設定したり、ポートマッピングを行ったりすることができます。

5.2 docker-compose psコマンド:Composeアプリケーションのコンテナ一覧を表示

Docker Composeアプリケーションのコンテナ一覧を表示するには、docker-compose psコマンドを使用します。Composeファイルが存在するディレクトリで実行する必要があります。

bash
docker-compose ps

このコマンドは、Composeファイルで定義されたすべてのコンテナの状態を表示します。

5.3 Docker Composeにおけるコンテナの状態管理

Docker Composeを使用すると、コンテナの起動、停止、再起動などをまとめて実行できます。docker-compose upコマンドでComposeアプリケーションを起動し、docker-compose downコマンドで停止します。

6. Docker Desktopによるコンテナ一覧表示

6.1 Docker Desktopの概要とインストール

Docker Desktopは、macOSとWindows上でDockerを簡単に利用できるようにするためのGUIアプリケーションです。Docker Engine、Docker CLI、Docker Composeなどが含まれています。

Docker Desktopをインストールすることで、Dockerをコマンドラインだけでなく、GUIからも操作できます。

6.2 Docker DesktopのGUIによるコンテナ一覧表示

Docker Desktopを起動すると、GUIでコンテナの一覧が表示されます。コンテナの状態、リソース使用状況などをグラフィカルに確認できます。

6.3 Docker DesktopのGUIによるコンテナ管理機能

Docker DesktopのGUIからは、コンテナの起動、停止、再起動、削除、ログの表示、ターミナルの起動など、様々な操作を簡単に行うことができます。

7. コンテナ一覧を活用した効率的なコンテナ管理

コンテナ一覧を把握することで、コンテナの管理を効率的に行うことができます。

7.1 不要なコンテナの削除:docker rmコマンド

停止中の不要なコンテナは、docker rmコマンドで削除できます。コンテナIDまたは名前を指定します。

bash
docker rm <container_id_or_name>

複数のコンテナをまとめて削除するには、以下のようにします。

bash
docker rm $(docker ps -a -q -f status=exited)

7.2 停止中のコンテナの起動:docker startコマンド

停止中のコンテナを起動するには、docker startコマンドを使用します。コンテナIDまたは名前を指定します。

bash
docker start <container_id_or_name>

7.3 実行中のコンテナの停止:docker stopコマンド

実行中のコンテナを停止するには、docker stopコマンドを使用します。コンテナIDまたは名前を指定します。

bash
docker stop <container_id_or_name>

7.4 コンテナのリソース制限設定

Dockerでは、コンテナが使用できるCPUやメモリなどのリソースを制限することができます。リソース制限を設定することで、コンテナがホストマシンのリソースを過剰に消費するのを防ぎ、システムの安定性を向上させることができます。

リソース制限は、docker runコマンドで指定します。

  • --cpus: CPU使用率を制限
  • --memory: メモリ使用量を制限

8. トラブルシューティング:コンテナ一覧が表示されない場合の対処法

コンテナ一覧が表示されない場合、いくつかの原因が考えられます。

8.1 Dockerデーモンが起動しているか確認

Dockerデーモンが起動していない場合、docker psコマンドを実行しても何も表示されません。Dockerデーモンが起動しているか確認し、起動していない場合は起動してください。

8.2 権限の問題

Dockerコマンドを実行するユーザーに十分な権限がない場合、コンテナ一覧が表示されないことがあります。sudoコマンドを使用するか、Dockerグループにユーザーを追加してください。

8.3 ネットワークの問題

Dockerデーモンとの通信に問題がある場合、コンテナ一覧が表示されないことがあります。ネットワーク設定を確認し、Dockerデーモンとの通信が正常に行われているか確認してください。

9. まとめ:Dockerコンテナ一覧をマスターして、より効率的なコンテナ管理を実現

Dockerコンテナ一覧を表示するためのコマンド、確認方法、そして状態別の表示方法について徹底的に解説しました。docker psコマンドを使いこなし、--filterオプションや--formatオプションを駆使することで、コンテナの状態を詳細に把握し、効率的なコンテナ管理を実現できます。Docker ComposeやDocker Desktopなどのツールと組み合わせることで、さらにコンテナ管理を簡素化できます。この記事が、あなたのDockerライフをより快適にする一助となれば幸いです。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール