こちらに書いたDocker imagesの削除記事で 手抜きなことを書いてしまったので、
改めて、以下のエラーが発生したときの無理ない対処方法を記載。
docker@default:~$ docker rmi -f 11cf55a56033
Error response from daemon: conflict: unable to delete 11cf55a56033 (cannot be forced) - image has dependent child images
エラーメッセージを読むと、子供のimageに依存を持っているため消せないらしい。
というわけで子供のimageを調べる(調べた際の記事は「参照記事」)。
for i in $(docker images -q)
do
docker history $i | grep -q "削除対象のdocker iamge id" && echo $i
done | sort -u
ちなみに docker historyの結果は以下のようのな感じ。
docker@default:/hoge/fuge $ docker history fecab3660104
IMAGE CREATED CREATED BY SIZE COMMENT
fecab3660104 2 months ago /bin/sh -c #(nop) ENV PATH=/root/.rbenv/bin… 0B
5352aaffce2a 2 months ago /bin/sh -c #(nop) COPY file:50f184d22286888c… 16kB
19e290fbd5df 2 months ago /bin/sh -c #(nop) COPY file:0cc28e1bd381941b… 8.02kB
0696f3b548ef 2 months ago /bin/sh -c #(nop) WORKDIR /vendor/src/wasabi 0B
e2fbc6a0e913 2 months ago /bin/sh -c #(nop) ENV SRC_DIR=/vendor/src/w… 0B
9b2faf08151b 2 months ago /bin/sh -c echo "必要なパッケージがインスト… 0B
a9155bf2736d 2 months ago /bin/sh -c cd /usr/local/share/ && ln -s… 177B
6344295f5f29 2 months ago /bin/sh -c mkdir -p /usr/local/share && … 91.5MB
fec6d6295cb4 2 months ago /bin/sh -c . ~/.rbenvrc && curl -fsSL ht… 103MB
27959467b5a9 2 months ago /bin/sh -c git clone git://github.com/ssteph… 3.32MB
9e46bb875e03 2 months ago /bin/sh -c chmod 744 $ENTRYPOINT_FILE 12B
ac161460f001 2 months ago /bin/sh -c echo "#!/bin/bash" >> $ENTRYPOINT… 12B
d50358b198d4 2 months ago /bin/sh -c #(nop) ENV ENTRYPOINT_FILE=/etc/… 0B
5721c09db514 2 months ago /bin/sh -c echo "set encoding=utf-8" >> /etc… 2.17kB
5ea85a94bfe1 2 months ago /bin/sh -c update-locale LANG=ja_JP.UTF-8 LA… 70B
e6275e5e7fad 2 months ago /bin/sh -c apt-get update && apt-get -y inst… 513MB
5f8a1f92452d 2 months ago /bin/sh -c #(nop) MAINTAINER yamada.te <yam… 0B
971bb384a50a 3 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 3 months ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 3 months ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$… 2.76kB
<missing> 3 months ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0B
<missing> 3 months ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 195kB
<missing> 3 months ago /bin/sh -c #(nop) ADD file:2b307231ea5854129… 188MB
子供のimageがわかったら、その依存する子供のimageを消す。
たいがいの場合、以下のエラーがでるはず。
docker@default:/hoge/fuge $ docker rmi cf2e26aad7fe
Error response from daemon: conflict: unable to delete cf2e26aad7fe (must be forced) - image is being used by stopped container d7e8028cdbd0
とか
docker@default:/hoge/fuge $ docker rmi a657d18ecf8f
Error response from daemon: conflict: unable to delete a657d18ecf8f (must be forced) - image is referenced in multiple repositories
など。
その場合は docker ps -a で関係するcontanierの正体を確認したのち、
問題なければ、docker rmでコンテナを削除する。
containerを消せたならば、docker rmi で先程の依存する子供のimageを削除する。
そうすると、自動的に依存する親のimageが全て削除されるので、目的達成となる。
以上。