LoginSignup
14
10

More than 3 years have passed since last update.

Docker imageの削除方法

Last updated at Posted at 2018-10-29

こちらに書いた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が全て削除されるので、目的達成となる。

以上。

参照記事

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10