docker ps

読む時間の目安: 11 分

説明

コンテナーの一覧表示。

利用方法

$ docker ps [オプション]

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

名前/省略形 デフォルト 説明
--all , -a コンテナーすべてを表示します。(デフォルトは実行中コンテナーのみ。)
--filter , -f 指定された条件に基づいてフィルター検索を行います。
--format Go 言語テンプレートを使って出力をフォーマットします。
--last , -n -1 直近に生成された n 個のコンテナーを表示します(すべての状態を含みます)。
--latest , -l 最新のコンテナーを表示します(すべての状態を含みます)。
--no-trunc 詳細出力を行います。
--quiet , -q コンテナー ID のみ表示します。
--size , -s 合計ファイルサイズを表示します。

利用例

詳細出力

docker ps --no-truncを実行すると、リンクされている 2 つのコンテナーが表示されています。

$ docker ps

CONTAINER ID        IMAGE                        COMMAND                CREATED              STATUS              PORTS               NAMES
4c01db0b339c        ubuntu:12.04                 bash                   17 seconds ago       Up 16 seconds       3300-3310/tcp       webapp
d7886598dbe2        crosbymichael/redis:latest   /redis-server --dir    33 minutes ago       Up 33 minutes       6379/tcp            redis,webapp/db

実行中、停止中コンテナーの混在表示

docker psコマンドは、デフォルトでは実行中のコンテナーのみを表示します。 コンテナーすべてを表示するには-a(または--all)フラグを指定します。

$ docker ps -a

docker psでは公開ポートを 1 つにまとめられる場合には、まとめて表示します。 たとえばコンテナーが TCP ポート100, 101, 102を公開している場合、PORTS欄には100-102/tcpと表示します。

コンテナーのディスク使用量の表示

docker ps -sコマンドでは、各コンテナーにおいてディスクサイズの情報を 2 つ表示します。

$ docker ps -s

CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS       PORTS   NAMES        SIZE                                                                                      SIZE
e90b8831a4b8   nginx          "/bin/bash -c 'mkdir "   11 weeks ago   Up 4 hours           my_nginx     35.58 kB (virtual 109.2 MB)
00c6131c5e30   telegraf:1.5   "/entrypoint.sh"         11 weeks ago   Up 11 weeks          my_telegraf  0 B (virtual 209.5 MB)
  • 「size」(サイズ)は、各コンテナーの 書き込み可能 レイヤーが利用している(ディスク上の)データ使用量を表わします。
  • 「virtual size」(仮想サイズ)は、コンテナーの読み込み専用 イメージ データおよび書き込み可能レイヤーが利用しているディスク総使用量を表わします。

詳しくは ディスク上のコンテナーサイズ の節を参照してください。

フィルター検索

フィルターフラグ(-fまたは--filter)の指定書式は「キー=値」というものです。 複数のフィルターが必要な場合は、フラグを複数指定します。 (たとえば--filter "foo=bar" --filter "bif=baz"など。)

現在サポートされているフィルターは以下のとおりです。

フィルター 内容説明
id コンテナー ID
name コンテナー名
label キーまたはキーバリューペアを表現する任意の文字列。表現形式は<key>または<key>=<value>
exited コンテナーの終了コードを表わす整数値。--allを用いるときのみ有用。
status 以下のいずれか。createdrestartingrunningremovingpausedexiteddead
ancestor 指定されたイメージを先祖として持つコンテナーを検索。表現形式は<image-name>[:<tag>]<image id><image@digest>
beforeまたはsince 指定された名前または ID のコンテナーの前後に生成されたコンテナーを検索。
volume 指定されたボリュームまたはバインドマウントを持つ実行コンテナーを検索。
network 指定されたネットワークに接続する実行コンテナーを検索。
publishまたはexpose 指定されたポートを公開するコンテナーを検索。表現形式は<port>[/<proto>]<startport-endport>/[<proto>]
health ヘルスチェックステータスによるコンテナーを検索。以下のいずれか。startinghealthyunhealthynone
isolation Windows デーモンのみ。以下のいずれか。defaultprocesshyperv
is-task サービスに対して「タスク」であるコンテナーを検索。ブール値オプション(truefalse)。

label フィルター

labelフィルターは、labelだけが存在する、あるいはlabelとその値が存在するコンテナーを検索します。

以下の例ではcolorラベルを持ったコンテナーが検索されます。 この場合、その値の内容は問いません。

$ docker ps --filter "label=color"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
673394ef1d4c        busybox             "top"               47 seconds ago      Up 45 seconds                           nostalgic_shockley
d85756f57265        busybox             "top"               52 seconds ago      Up 51 seconds                           high_albattani

以下の例ではcolorラベルにblueという値を持つコンテナーが抽出されます。

$ docker ps --filter "label=color=blue"

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
d85756f57265        busybox             "top"               About a minute ago   Up About a minute                       high_albattani

name フィルター

nameフィルターは、コンテナー名の全部または一部を検索します。

以下のフィルター指定では、nostalgic_stallmanという文字列を名前に含んだコンテナーすべてが検索されます。

$ docker ps --filter "name=nostalgic_stallman"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9b6247364a03        busybox             "top"               2 minutes ago       Up 2 minutes                            nostalgic_stallman

名前の部分文字列を指定することも可能です。 以下がその例です。

$ docker ps --filter "name=nostalgic"

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
715ebfcee040        busybox             "top"               3 seconds ago       Up 1 second                             i_am_nostalgic
9b6247364a03        busybox             "top"               7 minutes ago       Up 7 minutes                            nostalgic_stallman
673394ef1d4c        busybox             "top"               38 minutes ago      Up 38 minutes                           nostalgic_shockley

exited

exitedフィルターは、終了ステータスコードを持つコンテナーに一致します。 たとえば正常に終了しているコンテナーに一致させるには、以下のようにします。

$ docker ps -a --filter 'exited=0'

CONTAINER ID        IMAGE             COMMAND                CREATED             STATUS                   PORTS                      NAMES
ea09c3c82f6e        registry:latest   /srv/run.sh            2 weeks ago         Exited (0) 2 weeks ago   127.0.0.1:5000->5000/tcp   desperate_leakey
106ea823fe4e        fedora:latest     /bin/sh -c 'bash -l'   2 weeks ago         Exited (0) 2 weeks ago                              determined_albattani
48ee228c9464        fedora:20         bash                   2 weeks ago         Exited (0) 2 weeks ago                              tender_torvalds

終了シグナルによるフィルター

終了コードを用いて、たとえばSIGKILL(9)によって kill された終了コード137のコンテナーをフィルター検索することができます。

$ docker ps -a --filter 'exited=137'

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                       PORTS               NAMES
b3e1c0ed5bfe        ubuntu:latest       "sleep 1000"           12 seconds ago      Exited (137) 5 seconds ago                       grave_kowalevski
a2eb5558d669        redis:latest        "/entrypoint.sh redi   2 hours ago         Exited (137) 2 hours ago                         sharp_lalande

以下に示すイベントにおいても137ステータスになります。

  • コンテナーのinitプロセスが手動で kill されたとき。
  • docker killによってコンテナーを kill したとき。
  • Docker デーモンが再起動にあたって、実行中コンテナーをすべて kill したとき。

status

statusはコンテナーのステータスをフィルター検索します。 利用できるフィルターはcreatedrestartingrunningremovingpausedexiteddeadです。 たとえばrunning(実行中)コンテナーは以下のようにしてフィルター検索できます。

$ docker ps --filter status=running

CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
715ebfcee040        busybox                "top"               16 minutes ago      Up 16 minutes                           i_am_nostalgic
d5c976d3c462        busybox                "top"               23 minutes ago      Up 23 minutes                           top
9b6247364a03        busybox                "top"               24 minutes ago      Up 24 minutes                           nostalgic_stallman

paused(一時停止中の)コンテナーは以下のようになります。

$ docker ps --filter status=paused

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
673394ef1d4c        busybox             "top"               About an hour ago   Up About an hour (Paused)                       nostalgic_shockley

ancestor

ancestorはコンテナーがベースとしているイメージまたはその子孫をフィルター検索します。 このフィルターでは以下のイメージ表現をサポートしています。

  • image
  • image:tag
  • image:tag@digest
  • short-id
  • full-id

tagを指定しなかった場合はlatestタグが用いられます。 たとえば最新のubuntuイメージを利用するコンテナーをフィルター検索するには、以下のようにします。

$ docker ps --filter ancestor=ubuntu

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace
5d1e4a540723        ubuntu-c2           "top"               About a minute ago   Up About a minute                       admiring_sammet
82a598284012        ubuntu              "top"               3 minutes ago        Up 3 minutes                            sleepy_bose
bab2a34ba363        ubuntu              "top"               3 minutes ago        Up 3 minutes                            focused_yonath

ubuntu-c1イメージをベースとうるコンテナーを検索します。 この例においてこれはubuntuの子イメージです。

$ docker ps --filter ancestor=ubuntu-c1

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
919e1179bdb8        ubuntu-c1           "top"               About a minute ago   Up About a minute                       admiring_lovelace

ubuntuのバージョン12.04.5に基づいたイメージを検索します。

$ docker ps --filter ancestor=ubuntu:12.04.5

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
82a598284012        ubuntu:12.04.5      "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

以下の例では、レイヤーd0e008c6cf02に基づくコンテナー、あるいはレイヤー層の中にこのレイヤーを持つイメージが検索されます。

$ docker ps --filter ancestor=d0e008c6cf02

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
82a598284012        ubuntu:12.04.5      "top"               3 minutes ago        Up 3 minutes                            sleepy_bose

生成時刻

before

beforeフィルターは、ID または名前によって指定されたコンテナーよりも以前に生成されたコンテナーのみを検索します。 たとえば以下のようなコンテナーがすでに生成済みであるとします。

$ docker ps

CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
9c3527ed70ce        busybox     "top"         14 seconds ago       Up 15 seconds                          desperate_dubinsky
4aace5031105        busybox     "top"         48 seconds ago       Up 49 seconds                          focused_hamilton
6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat

beforeフィルターにより以下のような結果が得られます。

$ docker ps -f before=9c3527ed70ce

CONTAINER ID        IMAGE       COMMAND       CREATED              STATUS              PORTS              NAMES
4aace5031105        busybox     "top"         About a minute ago   Up About a minute                      focused_hamilton
6e63f6ff38b0        busybox     "top"         About a minute ago   Up About a minute                      distracted_fermat
since

sinceフィルターは、ID または名前によって指定されたコンテナーよりも以降に生成されたコンテナーのみを検索します。 たとえばbeforeフィルターのときと同じコンテナーに対して検索します。

$ docker ps -f since=6e63f6ff38b0

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9c3527ed70ce        busybox     "top"         10 minutes ago      Up 10 minutes                           desperate_dubinsky
4aace5031105        busybox     "top"         10 minutes ago      Up 10 minutes                           focused_hamilton

volume

volumeフィルターは、指定するボリュームをマウントしているコンテナーまたは指定パスにマウントされているボリュームを持つコンテナーのみを検索します。

$ docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"

CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

$ docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"

CONTAINER ID        MOUNTS
9c3527ed70ce        remote-volume

network

networkフィルターは、指定された名前または ID のネットワークに接続しているコンテナーのみを検索します。

以下のフィルターでは、ネットワーク名にnet1を含むネットワークに接続しているコンテナーを検索します。

$ docker run -d --net=net1 --name=test1 ubuntu top
$ docker run -d --net=net2 --name=test2 ubuntu top

$ docker ps --filter network=net1

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9d4893ed80fe        ubuntu      "top"         10 minutes ago      Up 10 minutes                           test1

ネットワークフィルターでは、ネットワーク名とネットワーク ID のどちらを使っても検索されます。 以下の例では、net1ネットワークに接続されているコンテナーを検索するものであり、検索にはネットワーク ID を利用しています。

$ docker network inspect --format "{{.ID}}" net1

8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5

$ docker ps --filter network=8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5

CONTAINER ID        IMAGE       COMMAND       CREATED             STATUS              PORTS               NAMES
9d4893ed80fe        ubuntu      "top"         10 minutes ago      Up 10 minutes                           test1

publish と expose

publishフィルターとexposeフィルターは、指定されたポート番号、ポート範囲、プロトコルによる公開ポートを持ったコンテナーのみが検索されます。、 プロトコルが指定されなかった場合のデフォルトはtcpです。

以下のフィルターは公開ポート 80 を持つコンテナーがすべて検索されます。

$ docker run -d --publish=80 busybox top
$ docker run -d --expose=8080 busybox top

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
9833437217a5        busybox             "top"               5 seconds ago       Up 4 seconds        8080/tcp                dreamy_mccarthy
fc7e477723b7        busybox             "top"               50 seconds ago      Up 50 seconds       0.0.0.0:32768->80/tcp   admiring_roentgen

$ docker ps --filter publish=80

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                   NAMES
fc7e477723b7        busybox             "top"               About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp   admiring_roentgen

以下のフィルターは、公開されている TCP ポートが8000-8080であるようなコンテナーがすべて検索されます。

$ docker ps --filter expose=8000-8080/tcp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
9833437217a5        busybox             "top"               21 seconds ago      Up 19 seconds       8080/tcp            dreamy_mccarthy

以下のフィルターは公開されているポートが UDP 80 であるようなコンテナーすべてが検索されます。

$ docker ps --filter publish=80/udp

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

フォーマット設定

フォーマット設定オプション(--format)により Go 言語のテンプレートを利用して、コンテナーをわかりやすく出力することができます。

Go 言語テンプレートによるプレースホルダー(placeholder)は以下のとおりです。

プレースホルダー 内容説明
.ID コンテナー ID。
.Image イメージ ID。
.Command クォートでくくられたコメント。
.CreatedAt コンテナーの生成時刻。
.RunningFor コンテナーが起動してからの経過時間。
.Ports 公開ポート。
.State コンテナーのステータス(たとえば「created」、「running」、「exited」)
.Status コンテナーのステータスとして、時刻や健康状態などの詳細。
.Size コンテナーのディスクサイズ。
.Names コンテナー名。
.Labels コンテナーに割り当てられている全ラベル名。
.Label コンテナーにおける特定ラベルの値。たとえば'{{.Label "com.docker.swarm.cpu"}}'
.Mounts コンテナーにマウントされているボリューム名。
.Networks コンテナーに割り当てられているネットワーク名。

--format オプションを利用すると ps コマンドは、テンプレートが定めるデータを直接出力します。 また table ディレクティブを利用すると、カラムヘッダーも同時に出力されます。

以下は、ヘッダーを含めずにテンプレートを利用する例であり、すべてのコンテナーにおける IDCommand の各項目がコロン(:)で区切って表示されます。

$ docker ps --format "{{.ID}}: {{.Command}}"

a87ecb4f327c: /bin/sh -c #(nop) MA
01946d9d34d8: /bin/sh -c #(nop) MA
c1d3b0166030: /bin/sh -c yum -y up
41d50ecd2f57: /bin/sh -c #(nop) MA

実行中コンテナーの一覧を、ラベルとともに表形式で出力するには、以下のようにします。

$ docker ps --format "table {{.ID}}\t{{.Labels}}"

CONTAINER ID        LABELS
a87ecb4f327c        com.docker.swarm.node=ubuntu,com.docker.swarm.storage=ssd
01946d9d34d8
c1d3b0166030        com.docker.swarm.node=debian,com.docker.swarm.cpu=6
41d50ecd2f57        com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd

上位コマンド

コマンド 説明
docker Docker CLI の基本コマンド