docker ps
読む時間の目安: 10 分
説明
コンテナーの一覧表示。
利用方法
$ 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 |
以下のいずれか。created 、restarting 、running 、removing 、paused 、exited 、dead |
ancestor |
指定されたイメージを先祖として持つコンテナーを検索。表現形式は<image-name>[:<tag>] 、<image id> 、<image@digest> |
before またはsince |
指定された名前または ID のコンテナーの前後に生成されたコンテナーを検索。 |
volume |
指定されたボリュームまたはバインドマウントを持つ実行コンテナーを検索。 |
network |
指定されたネットワークに接続する実行コンテナーを検索。 |
publish またはexpose |
指定されたポートを公開するコンテナーを検索。表現形式は<port>[/<proto>] 、<startport-endport>/[<proto>] |
health |
ヘルスチェックステータスによるコンテナーを検索。以下のいずれか。starting 、healthy 、unhealthy 、none |
isolation |
Windows デーモンのみ。以下のいずれか。default 、process 、hyperv |
is-task |
サービスに対して「タスク」であるコンテナーを検索。ブール値オプション(true 、false )。 |
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
はコンテナーのステータスをフィルター検索します。
利用できるフィルターはcreated
、restarting
、running
、removing
、paused
、exited
、dead
です。
たとえば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
ディレクティブを利用すると、カラムヘッダーも同時に出力されます。
以下は、ヘッダーを含めずにテンプレートを利用する例であり、すべてのコンテナーにおける ID
、Command
の各項目がコロン(:
)で区切って表示されます。
$ 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 の基本コマンド |