Dockerで「Error response from daemon: conflict: unable to delete」エラー

プログラミング

Dockerでimageを削除しようとした際に発生する「Error response from daemon: conflict: unable to delete」エラーの対処法です。

現象

# dockerのイメージリスト
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
localhost:5000/pocketcode/centos        7                   b5b4d78bc90c        2 months ago        203MB
localhost:50000/centos                  7                   b5b4d78bc90c        2 months ago        203MB

# IMAGE ID[b5b4d78bc90c]の削除を試みるとエラーが発生
$ docker rmi b5b4d78bc90c
Error response from daemon: conflict: unable to delete b5b4d78bc90c (cannot be forced) - image has dependent child images

原因

削除対象のIMAGE IDが複数存在するために発生します。そのため削除するにはIMAGE IDを指定するのではなく、docker rmi REPOSITRY:TAGとする必要があります。

対処法2つ

1. REPOSITRY:TAG指定で削除

# dockerのイメージリスト
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
localhost:5000/pocketcode/centos        7                   b5b4d78bc90c        2 months ago        203MB
localhost:50000/centos                  7                   b5b4d78bc90c        2 months ago        203MB

$ REPOSITRY:TAG指定で削除する
$ docker rmi localhost:50000/centos:7
Untagged: localhost:50000/centos:7
Untagged: localhost:50000/centos:7/centos@sha256:c2f1d5a9c0a81350fa0ad7e1eee99e379d75fe53823d44b5469eb2eb6092c941

# 削除後のdockerのイメージリスト
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
localhost:5000/pocketcode/centos        7                   b5b4d78bc90c        2 months ago        203MB

これで削除完了です。

2. 一括でimageを削除

# dockerのイメージリスト
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
localhost:5000/pocketcode/centos        7                   b5b4d78bc90c        2 months ago        203MB
localhost:50000/centos                  7                   b5b4d78bc90c        2 months ago        203MB

#  IMAGE IDに紐づくimageをすべて削除
# 例:docker images | grep <IMAGE ID>| awk '{print $1 ":" $2}' | xargs docker rmi
$ docker images | grep b5b4d78bc90c | awk '{print $1 ":" $2}' | xargs docker rmi

# 削除後のdockerのイメージリスト
$ docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE

以上で「Error response from daemon: conflict: unable to delete」エラーの対処法は完了です。

pocketcode

30代のWEB系企業エンジニアです。毎回同じようなことを検索してしまうので、自分の備忘録的に書いています。サイトのデザインはQiita(https://qiita.com)さんに寄せています。