1. コマンド置換を使う方法
コマンド置換($()
)を使用して、全コンテナのIDを取得して削除する方法です。
# 全コンテナを削除(実行中も停止中も含む)
docker rm -f $(docker ps -aq)
# 停止中のコンテナのみ削除
docker rm $(docker ps -aq --filter "status=exited")
# 実行中のコンテナのみ削除
docker rm -f $(docker ps -q)
実行例:
$ docker ps -aq
d2985b2cc38c
abc123def456
ghi789jkl012
$ docker rm -f $(docker ps -aq)
d2985b2cc38c
abc123def456
ghi789jkl012
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 全部消せた!!
2. パイプを使う方法
パイプ(|
)と xargs
を使用して、全コンテナを一括で削除する方法です。
# 全コンテナを削除(実行中も停止中も含む)
docker ps -aq | xargs docker rm -f
# 停止中のコンテナのみ削除
docker ps -aq --filter "status=exited" | xargs docker rm
# 実行中のコンテナのみ削除
docker ps -q | xargs docker rm -f
実行例:
$ docker ps -aq
d2985b2cc38c
abc123def456
ghi789jkl012
$ docker ps -aq | xargs docker rm -f
d2985b2cc38c
abc123def456
ghi789jkl012
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
使い分け
- コマンド置換: シンプルで直感的、変数の概念がわかれば使える
- パイプ: より柔軟な設定ができるが、linuxのパイプの仕組みを知る必要がある(と言っても基礎的)
なお自分はコマンド置換が楽で好きです