在 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 -
<none> <none> 85fe3c0f93cd 4 hours ago 2.29 GB -
<none> <none> 8c21bee23d95 4 hours ago 1.75 GB -
<none> <none> c1238038e2fd 4 hours ago 1.48 GB -
<none> <none> fb7903a3a8d4 4 hours ago 1.48 GB -
<none> <none> f0d5d6e9b56f 4 hours ago 1.48 GB -
<none> <none> 67696fdef089 4 hours ago 1.48 GB -
<none> <none> 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
当尝试删除Dockerimage时遇到依赖冲突错误,可以使用`dockerimageinspect`命令查找依赖关系并删除相关childimages。首先列出所有在指定image之后创建的image,然后删除这些image的父image,以此解除依赖并成功删除目标image。
7020

被折叠的 条评论
为什么被折叠?



