なにこれ
-
docker ps
の結果のうち、一部だけを表示するメモ - まとめ:書ききれないのでOfficial Documentationを読もう。特にフィルタリング。
準備
ヘルプ表示
$ docker ps -h
Flag shorthand -h has been deprecated, please use --help
Usage: docker ps [OPTIONS]
List containers
Options:
-a, --all Show all containers (default shows just running)
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print containers using a Go template
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display container IDs
-s, --size Display total file sizes
hello-worldコンテナを5つ作成
$ for i in `seq 1 5`; do docker run hello-world; done
$ docker ps -a -n 5
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" About a minute ago Exited (0) About a minute ago cool_hertz
e6d3616b5a67 hello-world "/hello" About a minute ago Exited (0) About a minute ago clever_chatelet
bd7678b95d36 hello-world "/hello" About a minute ago Exited (0) About a minute ago zealous_maxwell
e68109080f0b hello-world "/hello" About a minute ago Exited (0) About a minute ago agitated_fermi
d59d057989ce hello-world "/hello" About a minute ago Exited (0) About a minute ago vigilant_kilby
Runningのコンテナだけ表示する
全部Exitedなので表示されない
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
CONTAINER IDで絞る
idが236858d287f8であるものを表示
$ docker ps -a -f id=bcca4b50f397
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" About a minute ago Exited (0) About a minute ago cool_hertz
NAMEで絞る
NAMEがcool_hertzであるものを表示
$ docker ps -a -f name=cool_hertz
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" About a minute ago Exited (0) About a minute ago cool_hertz
NAMEがcで始まるものを表示
$ docker ps -a -f name=^c.*
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago cool_hertz
e6d3616b5a67 hello-world "/hello" 2 minutes ago Exited (0) 2 minutes ago clever_chatelet
CONTAINER IDだけ出力する
NAMEがcで始まるもののCONTAINER_IDを出力
$ docker ps -a -f name=^c.* -q
bcca4b50f397
e6d3616b5a67
IMAGEだけ出力する
- formatのPlaceHolderについて記事末尾を参照。
NAMEがcで始まるもののIMAGEを出力
$ docker ps -a -f name=^c.* --format '{{.Image}}'
hello-world
hello-world
カラムを限定する
- formatのPlaceHolderについて記事末尾を参照。
CONTAINER_IDとNAMESとPORTSカラムのみ表示
$ docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
CONTAINER ID NAMES PORTS
bcca4b50f397 cool_hertz
e6d3616b5a67 clever_chatelet
bd7678b95d36 zealous_maxwell
e68109080f0b agitated_fermi
d59d057989ce vigilant_kilby
〇〇より前・後に作られたコンテナ
NAME=zealous_maxwellよりまえ
$ docker ps -a -f before=zealous_maxwell
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e68109080f0b hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago agitated_fermi
d59d057989ce hello-world "/hello" 4 minutes ago Exited (0) 4 minutes ago vigilant_kilby
NAME=zealous_maxwellよりあと
$ docker ps -a -f since=zealous_maxwell
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago cool_hertz
e6d3616b5a67 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago clever_chatelet
最後からn番目まで
最後に作られたコンテナ
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago cool_hertz
最後から3番目まで
$ docker ps -a -n 3
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bcca4b50f397 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago cool_hertz
e6d3616b5a67 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago clever_chatelet
bd7678b95d36 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago zealous_maxwell
ラベルで絞る
- 参照:クエリ・ラベル
com.example.is-betaがのラベルが存在するものすべて
$ docker ps --filter "label=com.example.is-beta"
colorラベルの値がblueのもの
$ docker ps --filter "label=color=blue"
PlaceHolderについて
Placeholder | (だいたい対応する)カラム名 | Description |
---|---|---|
.ID | CONTAINER ID | コンテナID |
.Image | IMAGE | イメージID |
.Command | COMMAND | コマンド |
.CreatedAt | CREATED | コンテナの作成日時 |
.RunningFor | CREATEDから計算 | コンテナの開始からの時間 |
.Ports | PORTS | 開放するポート |
.State | STATUS | コンテナのステータス (例えば; “created”, “running”, “exited”). |
.Status | STATUS | コンテナのステータス(詳細付き) |
.Size | SIZE | コンテナのサイズ |
.Names | NAMES | コンテナ名 |
.Labels | - | コンテナについたすべてのラベル |
.Label | - | コンテナについた特定のラベル。 例えば '{{.Label "com.docker.swarm.cpu"}}' |
.Mounts | - | マウントされたボリューム |
.Networks | - | アタッチされたネットワーク |
ついでに
絞った結果のコンテナをすべて削除する
直近3個のコンテナを削除する
# とりあえずxargsでdocker rmにCONTAINER IDをすべて渡せば消せる
$ docker ps -a -n 3 -q | xargs docker rm
サイズで絞るのは面倒
失敗例
# 一番左にsizeカラムが来るようにしたうえで、sortコマンドに処理させたらいいかと思ったが、
# 単位が邪魔だし、size/virtual sizeかも邪魔で区別できないので失敗する
$ docker ps -a -n 3 --format "table {{.Size}}\t{{.ID}}\t{{.Names}}\t{{.Ports}}" | (read -r; printf "%s\n"; sort -k 1)