目次

docker ps 入門:コンテナの一覧表示(フィルターと表示形式のカスタマイズ)

docker ps はコンテナを一覧表示します。コンテナ操作の全体については、コンテナのライフサイクルを参照してください。

構文

docker ps [オプション]

docker ps と docker container ls は同じコマンドです。

オプション

オプション説明
-a, --all停止済みのコンテナを含む、すべてのコンテナを表示します(デフォルトでは実行中のコンテナのみ表示)
-q, --quietコンテナ ID のみを出力します
-f, --filter 条件コンテナを絞り込みます。複数指定できます
--format テンプレート出力形式をカスタマイズします。table、json、または Go テンプレートを指定できます
-n, --last 数最近作成された n 個のコンテナを表示します(状態を問いません)
-l, --latest最後に作成されたコンテナを表示します
-s, --sizeコンテナのサイズを表示します
--no-trunc出力を省略せずに表示します(完全な ID とコマンド)

よく使う --filter 条件:

条件例
statusstatus=running、status=exited、status=created
namename=web(部分一致)
labellabel=team=backend
ancestorancestor=nginx:1.30-alpine(指定したイメージから作成)
exitedexited=137(終了コードで絞り込み)
publishpublish=8080(ポートを使用しているコンテナ)
network / volumenetwork=appnet、volume=pgdata
healthhealth=unhealthy

例

環境には3つのコンテナがあります。実行中の web(nginx)と worker1(team=backend ラベル付き)、および終了済みの stopped1 です。

実行中のコンテナとすべてのコンテナ

$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23         "sleep 600"              2 seconds ago   Up 2 seconds             worker1
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   8 seconds ago   Up 2 seconds   80/tcp    web

$ docker ps -a
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS                     PORTS     NAMES
c260b28b0630   alpine:3.23         "sleep 600"              2 seconds ago   Up 2 seconds                         worker1
17b5b9a8c9ce   alpine:3.23         "true"                   3 seconds ago   Exited (0) 2 seconds ago             stopped1
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   8 seconds ago   Up 2 seconds               80/tcp    web

$ docker ps -q
c260b28b0630
1ec4fdc5c592

docker ps には stopped1 は表示されません。docker ps -a を使うと、状態が Exited (0) の stopped1 も表示されます。-q は ID のみを出力するため、他のコマンドに渡すときに便利です。

絞り込み

$ docker ps -a --filter status=exited
CONTAINER ID   IMAGE         COMMAND   CREATED         STATUS                     PORTS     NAMES
17b5b9a8c9ce   alpine:3.23   "true"    3 seconds ago   Exited (0) 2 seconds ago             stopped1

$ docker ps --filter name=work
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   2 seconds ago   Up 2 seconds             worker1

$ docker ps --filter label=team=backend
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   2 seconds ago   Up 2 seconds             worker1

表示項目のカスタマイズ

$ docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
NAMES     IMAGE               STATUS
worker1   alpine:3.23         Up 2 seconds
web       nginx:1.30-alpine   Up 3 seconds

table を指定すると、ヘッダー行が追加されます。項目は \t(タブ)で区切ります。よく使う項目は .ID、.Names、.Image、.Status、.Ports、.CreatedAt、.Labels、.Size です。JSON 形式で出力するには --format json を使います。

サイズと最新のコンテナ

$ docker ps -s
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS     NAMES     SIZE
c260b28b0630   alpine:3.23         "sleep 600"              3 seconds ago   Up 2 seconds             worker1   4.1kB (virtual 9.1MB)
1ec4fdc5c592   nginx:1.30-alpine   "/docker-entrypoint.…"   9 seconds ago   Up 3 seconds   80/tcp    web       86kB (virtual 66.8MB)

$ docker ps -n 1
CONTAINER ID   IMAGE         COMMAND       CREATED         STATUS         PORTS     NAMES
c260b28b0630   alpine:3.23   "sleep 600"   3 seconds ago   Up 2 seconds             worker1
  • SIZE の最初の値はコンテナが書き込んだサイズ(書き込み可能レイヤー)です。virtual の値にはイメージのサイズが含まれます。nginx コンテナは起動時に一時ファイルを書き込むため、86kB になっています。
  • -n 1 は、最後に作成されたコンテナだけを表示します。

一括処理:停止済みコンテナをすべて削除する

$ docker rm $(docker ps -aq --filter status=exited)
17b5b9a8c9ce

$(...) は、まず中のコマンドを実行し、その結果(停止済みコンテナの ID すべて)を docker rm の引数として渡します。同じ処理は docker container prune でも実行できます(ディスク容量の整理を参照)。

PowerShell でも $(...) を使えます。Windows CMD は対応していないため、docker container prune を使ってください。

関連する章

練習問題

練習:nginx:1.30-alpine から作成されたコンテナをすべて(停止済みのものも含めて)一覧表示し、名前と状態だけを表示してください。

解答
docker ps -a --filter ancestor=nginx:1.30-alpine --format "table {{.Names}}\t{{.Status}}"

よくある質問

docker ps に実行したばかりのコンテナが表示されないのはなぜですか?

docker ps は**実行中**のコンテナだけを表示します。コンテナが終了した場合(単発コマンドの場合や、起動に失敗した場合など)は、docker ps -a を使います。

docker ps と docker container ls は同じですか?

まったく同じです。docker ps、docker container ls、docker container list、docker container ps はすべて同じコマンドです。

STATUS の Exited (0) と Exited (1) は何が違いますか?

括弧内は終了コードです。0 はプログラムが正常に終了したことを示し、0 以外はエラーを示します。137 は強制終了されたことを示します(メモリ不足など)。原因を確認するには docker logs を使います。

更新日 2026年10月14日