Dockerコンテナ一覧:コマンド、確認方法、状態別表示を徹底解説
Dockerは、アプリケーションをコンテナと呼ばれる軽量な仮想化環境にパッケージ化し、配布・実行するためのプラットフォームです。Dockerコンテナは、開発環境、テスト環境、本番環境を問わず、一貫した環境でアプリケーションを実行することを可能にします。
Dockerコンテナを効率的に管理するためには、コンテナの状態を把握することが重要です。Dockerコンテナ一覧を表示することで、実行中のコンテナ、停止中のコンテナ、過去に実行されたコンテナなど、すべてのコンテナの状態を確認できます。
この記事では、Dockerコンテナ一覧を表示するためのコマンド、確認方法、そして状態別の表示方法を徹底的に解説します。Docker初心者から上級者まで、コンテナ管理に必要な知識を網羅的に提供し、あなたのDockerライフをより快適にするお手伝いをします。
目次
- Dockerコンテナ一覧を表示する基本コマンド:
docker ps
docker ps
コマンドの基本的な使い方docker ps
コマンドのオプション一覧-a
オプション:停止中のコンテナを含むすべてのコンテナを表示-q
オプション:コンテナIDのみを表示-s
オプション:コンテナのサイズを表示--format
オプション:出力形式をカスタマイズ--filter
オプション:特定の条件に合致するコンテナのみを表示
- Dockerコンテナの状態について
- 実行中 (running)
- 停止中 (exited)
- 再起動中 (restarting)
- 一時停止中 (paused)
- 作成済み (created)
- デッド (dead)
- 各状態の意味と、コンテナ管理における重要性
- 状態別のDockerコンテナ一覧表示方法
- 実行中のコンテナのみ表示:
docker ps
- 停止中のコンテナのみ表示:
docker ps -a --filter "status=exited"
- 特定の状態のコンテナを絞り込む:
--filter
オプションの活用 - 複数の状態のコンテナを同時に表示:
--filter
オプションの組み合わせ
- 実行中のコンテナのみ表示:
- コンテナ一覧の情報をより詳細に表示する
docker inspect
コマンド:コンテナの詳細情報をJSON形式で表示docker stats
コマンド:コンテナのリソース使用状況をリアルタイムで表示docker top
コマンド:コンテナ内で実行中のプロセスを表示
- Docker Composeによるコンテナ一覧表示
- Docker Composeの概要と利点
docker-compose ps
コマンド:Composeアプリケーションのコンテナ一覧を表示- Docker Composeにおけるコンテナの状態管理
- Docker Desktopによるコンテナ一覧表示
- Docker Desktopの概要とインストール
- Docker DesktopのGUIによるコンテナ一覧表示
- Docker DesktopのGUIによるコンテナ管理機能
- コンテナ一覧を活用した効率的なコンテナ管理
- 不要なコンテナの削除:
docker rm
コマンド - 停止中のコンテナの起動:
docker start
コマンド - 実行中のコンテナの停止:
docker stop
コマンド - コンテナのリソース制限設定
- 不要なコンテナの削除:
- トラブルシューティング:コンテナ一覧が表示されない場合の対処法
- Dockerデーモンが起動しているか確認
- 権限の問題
- ネットワークの問題
- まとめ: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
: コンテナIDis-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条件を実現するためには awk
や grep
などの外部コマンドを組み合わせる必要があります。
例えば、以下のように 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ライフをより快適にする一助となれば幸いです。