文章为转载:原地址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
<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