Dockerのイメージ削除時のエラー「Error response from daemon: Conflict, cannot delete image」対策

概要

Dockerのイメージを削除する際、イメージ名を変更しているとエラーが出て一発で消せない時があります。

[root@test ~]# docker images
REPOSITORY   TAG              IMAGE ID            CREATED             VIRTUAL SIZE
hoge/centos   latest              2064fc6b29af        8 weeks ago         214.5 MB
fuga/centos   latest              2064fc6b29af        8 weeks ago         214.5 MB
[root@test ~]#

上記のイメージを削除する例です。

docker rmi `docker images -q`

で消そうとすると

Error response from daemon: Conflict, cannot delete image 2064fc6b29af because it is tagged in multiple repositories, use -f to force
Error response from daemon: Conflict, cannot delete image 2064fc6b29af because it is tagged in multiple repositories, use -f to force
Error: failed to remove images: [2064fc6b29af 2064fc6b29af]

こんなエラーが出る場合の対策です。

REPOSITORYが違っていますがIMAGE IDが同じです。

対策

docker rmiする際にREPOSITORYTAGを:(コロン)区切りで渡すと消すことが出来ます。

docker rmi `docker images | sed -ne '2,$p' -e 's/  */ /g' | awk '{print $1":"$2}'`

こうするとワンタッチで消せます。