Dockerで作成した名前の無いイメージを削除するワンライナー

Docker楽しいですね。

Dockerでイメージをビルドしていると、名前の無いイメージがたくさんできることがあります。

Dockerではイメージをレイヤーと呼ばれる断片ファイルに分割しています。
その為、イメージが大量にあったとしてもそれほど容量を圧迫することはありませんが、docker imagesの際に見栄えが悪くなったりします。

そこでイメージ名(リポジトリ名)を付け忘れたり、付けていなかったイメージについて全てを削除しました。

$ docker rmi $(docker images | grep none | awk '{print $3}')

docker images | grep noneでリポジトリ名、若しくはタグがnoneになっているイメージを抜き出します。
それをawkでハッシュ表記に整えてdocker rmiに流します。

現在コンテナで使われているイメージは削除されないのでご安心ください。

スッキリしましたね!

と、思ったけど…

コレで終わり、と思ってたんですが、マニュアルを確認したところフィルターオプションを使って削除するのが正しいようでした。

docker images –filter “dangling=true”
これはタグ付けされておらず、イメージ・ツリーから離れた(中間レイヤではない)イメージを表示します。
http://docs.docker.jp/engine/reference/commandline/images.html#dangling

$ docker images --filter "dangling=true"

として、イメージツリーから離れたイメージが出力されます。
また以下のようにして削除するのが正しそうです。

$ docker rmi $docker images --filter "dangling=true")

イメージが増えてきたら試します。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする