Dockerでいろいろ検証しているうちに、いつのまにかimageやcontainerが大変なことになっているときがよくある。
僕がよくやらかすのは、名前をつけずにbuildしたり、エラーやそのほかの理由で停止したcontainerをそのままにしていると、どんどん増加していく。
<none>
と付くimageだけを消したいが、消すためには該当のimageが使われているcontainerも消す必要があるので、それらをまとめて消すためのTips.
追記
docker system prune
コマンドで、使用されていないcontainer, network, image, volumeなどを削除することができるようです。便利!
volumeの削除は17.06.1から追加されており、--volumes
を付けない限りvolumeが削除されることはないようです。
1.【確認用】ステータスがExitedのcontainer IDを全て出力する
# docker ps -q --filter status=exited
別解 同じ結果だけどawkコマンドでごり押し
# docker ps -a | grep Exited | awk '{print $1}'
ここに表示されるIDを持つcontainerを今からすべて削除する。
2. Exitedのcontainer をすべて終了
# docker rm $(docker ps -q --filter status=exited)
3. image名noneのimageをすべて削除
# docker rmi $(docker images | grep none | awk '{print $3}')
これでさっぱりする。
まだDockerは勉強中なので、もっといい方法があるのかもしれない。