如何解决 image has dependent child images 错误

文章为转载:原地址http://www.ibloger.net/article/3217.html 感谢《程序喵》,方法很管用,所以转载供需~~~

问题

在 Docker 中删除 image 时有时会遇到类似

Error response from daemon: conflict: unable to delete 6ec9a5a0fc9f (cannot be forced) - image has dependent child images

这样的错误,原因是有另外的 image FROM 了这个 image,可以使用下面的命令列出所有在指定 image 之后创建的 image 的父 image

docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=xxxxxx)

其中 xxxxxx 是报错 image 的 id,在文章开头的例子中就是 6ec9a5a0fc9f。从列表中查找到之后就可以核对并删除这些 image。

示例

1、查看我的镜像列表。

root@localhost hbase-standalone]# docker images -a
REPOSITORY                                                     TAG                 IMAGE ID            CREATED             SIZE
hbase-standalone-ws                                            v1                  bbc8d4c92c1e        4 hours ago         2.29 GB
                                                                       85fe3c0f93cd        4 hours ago         2.29 GB
                                                                       8c21bee23d95        4 hours ago         1.75 GB
                                                                       c1238038e2fd        4 hours ago         1.48 GB
                                                                       fb7903a3a8d4        4 hours ago         1.48 GB
                                                                       f0d5d6e9b56f        4 hours ago         1.48 GB
                                                                       67696fdef089        4 hours ago         1.48 GB
                                                                       593b81400043        4 hours ago         1.48 GB
wusong/hbase-hadoop-zoo                                        v1                  1c11ea55ee0e        6 days ago  

2、删除none的镜像(删不掉)

docker rmi 593b81400043 
Error response from daemon: conflict: unable to delete 593b81400043 (cannot be forced) - image has dependent child images

3、查找出所有在指定 image 之后创建的 image 的父 image,本示例看得出是同一个依赖镜像

[root@localhost hbase-standalone]# docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=593b81400043)
[hbase-standalone-ws:v1] sha256:bbc8d4c92c1e92f25b5b57e13a5a3eecfc370f34f143234c42f6bb0de6715d63 sha256:85fe3c0f93cd4438570fefd20d6ca4d9346ce5722e16a0c5ba7716816d6debcf

4、删除关联的依赖镜像,关联的none镜像也会被删除

[root@localhost hbase-standalone]# docker rmi bbc8d
Untagged: hbase-standalone-ws:v1
Deleted: sha256:bbc8d4c92c1e92f25b5b57e13a5a3eecfc370f34f143234c42f6bb0de6715d63
Deleted: sha256:554d97feb2cb895a7feddf14f225a36f0aed6e13183e169a3eef45c4e890f5f2
Deleted: sha256:85fe3c0f93cd4438570fefd20d6ca4d9346ce5722e16a0c5ba7716816d6debcf
Deleted: sha256:e5aa2d106cb63f9a817e4325c460080aa1ed88370487acd40c8d50171f565ced
Deleted: sha256:8c21bee23d95b05aeaf9ff0c09606623f5616ffc4b9070733e9607cd9159119c
Deleted: sha256:385a3888732b31a35d2fa518a27870c517b422196d2c2eb28434f380a880f068
Deleted: sha256:c1238038e2fd51e55a5391f592a60d058ea36812cf9cb730af73a28a77c5db20
Deleted: sha256:fb7903a3a8d498d3de1bb3e0b1cc0fcbfecbfd765488a48669f6b94b9540243d
Deleted: sha256:f0d5d6e9b56f6844354fbdcbf24d1f9ec09d161173b5aca4ea6f748e9d55080a
Deleted: sha256:67696fdef0891644da7c9bbcb9a2eef4eb60d55f8cf91923607b0d0b10bf0787
Deleted: sha256:593b814000431dca14b23825f096098ea15b19458f3759562bdb81ce7710d4a1

5、再次查看镜像列表,相关镜像已经删除

[root@localhost hbase-standalone]# docker images -a
REPOSITORY                                                     TAG                 IMAGE ID            CREATED             SIZE
wusong/hbase-hadoop-zoo                                        v1                  1c11ea55ee0e        6 days ago          2.62 GB
docker                                                         latest              321f2cfcc343        2 weeks ago         152 MB
python                                                         2.7-slim            40792d8a2d6d        8 weeks ago 

其他操作

# 停止所有容器
➜  ~ docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
# 删除所有容器
➜  ~ docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
# 删除所有none容器
➜  ~ docker images|grep none|awk '{print $3 }'|xargs docker rmi

 

你可能感兴趣的:(如何解决 image has dependent child images 错误)