ps

使い方: docker ps [オプション]

コンテナの一覧

  -a, --all             全てのコンテナを表示 (デフォルトは実行中コンテナのみ表示)
  -f, --filter=[]       以下の状況に応じて出力をフィルタ:
                        - exited=<整数> 終了コードを <整数> で指定
                        - label=<key> または label=<key>=<value>
                        - status=(created|restarting|running|paused|exited)
                        - name=<文字列> コンテナ名
                        - id=<ID> コンテナ ID
                        - before=(<コンテナ名>|<コンテナID>)
                        - since=(<コンテナ名>|<コンテナID>)
                        - ancestor=(<イメージ名>[:タグ]|<イメージID>|<イメージ@ダイジェスト値>) - 特定のイメージや子孫から作成されたコンテナ
                        - volume=(<ボリューム名>|<マウント・ポイント>)
  --format=[]           Go テンプレートを使いコンテナの表示を整形
  --help                使い方の表示
  -l, --latest          最後に作成したコンテナを表示 (どのような状態でも)
  -n=-1                 直近で作成した n コンテナを表示 (どのような状態でも)
  --no-trunc            トランケート (truncate) を出力しない
  -q, --quiet           整数値の ID のみ表示
  -s, --size            合計ファイルサイズを表示

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 は実行中のコンテナだけ表示します。全てのコンテナを表示するには docker ps -a を使います。

docker ps は、可能であれば公開ポートのグループを範囲で表示します。例えば、コンテナが 100、101、102 を公開している場合、 PORT 列に 100-102/tcp と表示します。

フィルタリング

フィルタリング・フラグ( -f--filter )の形式は key=value の組です。複数のフィルタを指定するには、複数のフラグを使います(例: --filter "foo=bar" --filter "bif=baz" )。

現在、以下のフィルタをサポートします。

  • id(コンテナの ID)
  • label( label=<key>label=<key>=<value>
  • name(コンテナの名前)
  • exited(整数値 - コンテナの終了コード。実用的なのは --all
  • status(created|restarting|running|paused|exited|dead)
  • ancestor( <イメージ名>[:<タグ>]<イメージID><イメージ@digest> ) - 特定のイメージから作られた子コンテナを作成します。
  • before(コンテナ ID か名前) - 指定した ID か名前よりも前に作成したコンテナでフィルタ
  • since(コンテナ ID か名前) - 指定した ID か名前よりも後に作成したコンテナでフィルタ
  • isolation (default|process|hyperv)(Windows デーモンのみ)
  • volume(ボリューム名かマウントポイント) - コンテナがマウントしているボリュームでフィルタ
  • network(ネットワーク ID か名前)- コンテナが接続しているネットワークでフィルタ

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 seconds                            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

status

status はコンテナの状態が一致するものでフィルタします。フィルタとして使えるのは createdrestartingrunningpausedexiteddead です。例えば、 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 (先祖)フィルタはコンテナのベースとなったイメージや、その派生に一致するものです。フィルタは以下の形式で指定できます。

  • イメージ
  • イメージ:タグ
  • イメージ:タグ@digest
  • ショート ID
  • フル ID

タグ を指定しなければ、 latest タグが使われます。例えば、最新(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 か名前よりも前に作成したコンテナのみ表示します。たとえば、3つのコンテナを作成しているとします。

$ 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

フォーマット

フォーマットのオプション( --format )は Go テンプレートを使いコンテナの出力を整形します。

Go テンプレートで置き換え可能な一覧は、次の通りです:

.ID コンテナ ID
.Image イメージ ID
.Command クォートされたコマンド
.CreatedAt コンテナが作成された時間
.RunningFor コンテナが起動してからの時間
.Ports 公開しているポート
.Status コンテナのステータス
.Size コンテナのディスク容量
.Names コンテナ名
.Labels コンテナに割り当てられている全てのラベル
.Label コンテナに割り当てられた特定のラベル。例: {{.Label "com.docker.swarm.cpu"}}

ps コマンドに --format オプションを使えば、テンプレートで指定したデータを出力するだけでなく、 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