停止しているコンテナをまとめて削除するワンライナー
docker rm -v $(docker ps -q -f status=exited)
以下、補足です。
補足
以下コマンドで停止済みのコンテナ含めて確認可能です。
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a77e425c2ae ubuntu "/bin/bash" 6 days ago Exited (1) 6 days ago condescending_poitras 49745c19a711 ubuntu "/bin/bash" 6 days ago Up 6 days jovial_joliot 790db5d9f507 ubuntu "/bin/bash" 10 days ago Up 10 days kind_feynman 2b5746559edb ubuntu "/bin/bash" 10 days ago Exited (0) 10 days ago kind_clarke 06196a0265ca ubuntu "/bin/bash" 6 weeks ago Up 6 weeks sad_bardeen b29bdfebd0e5 ubuntu "/bin/bash" 6 weeks ago Up 6 weeks kind_poitras
上を見ると Exited...という文言がある2つのコンテナが停止しています。
ここで-f status=exited
を付与すると停止状態のコンテナだけが表示されます。
# docker ps -f status=exited CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a77e425c2ae ubuntu "/bin/bash" 6 days ago Exited (1) 6 days ago condescending_poitras 2b5746559edb ubuntu "/bin/bash" 10 days ago Exited (0) 10 days ago kind_clarke
最後に停止しているコンテナIDのみを出力させるために-q
オプションを追加します。
# docker ps -q -f status=exited
1a77e425c2ae
2b5746559edb
これをdocker rm
の引数にする以下ワンライナーで削除できます。
# docker rm -v $(docker ps -q -f status=exited)
1a77e425c2ae
2b5746559edb
確かに以下コマンドで確認するとコンテナは見当たりません。
# docker ps -f status=exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ちなみに削除時の-v
は物理的なボリュームも削除する際に付与します。
以下、docker rm
マニュアルから抜粋です。
-f, --force=true|false
Force the removal of a running container (uses SIGKILL). The default is false.
-l, --link=true|false
Remove the specified link and not the underlying container. The default is false.
-v, --volumes=true|false
Remove the volumes associated with the container. The default is false.
以上、定期的に利用するコマンドなので備忘録でした。