删除具有依赖儿童图像的docker图像

我想删除docker的图像,但我遇到这样的错误消息:

来自守护进程的错误响应:冲突:无法删除47bcc53f74dc(不能被强制) – 图像有从属的子图像

我通过docker stop $(docker ps -a -q)命令停止所有容器。 之后,我通过docker rmi $(docker images | grep "busybox" | awk '{print $3}')命令删除所有busybox图像。 而且我遇到了类似上面的错误信息。

我显示docker images | grep busybox docker images | grep busybox并获取如下信息:

 busybox 1 47bcc53f74dc 6 months ago 1.113 MB busybox 1-uclibc 47bcc53f74dc 6 months ago 1.113 MB busybox 1.24 47bcc53f74dc 6 months ago 1.113 MB busybox 1.24-uclibc 47bcc53f74dc 6 months ago 1.113 MB busybox 1.24.2 47bcc53f74dc 6 months ago 1.113 MB busybox 1.24.2-uclibc 47bcc53f74dc 6 months ago 1.113 MB busybox uclibc 47bcc53f74dc 6 months ago 1.113 MB 

如何删除busybox图像? 感谢您的任何build议。

这个警告提示你一些容器仍然链接(inheritance)你要删除的docker FS层。 没有select删除中间docker文件系统层而不重新创build基于这些的子图像。

说,你有像这样的configuration:

 base_layer_A -> base_layer_B \ \_ child_layer_D \__ container C 

…愿意删除容器C和A层

你不能这样做(因为B层是基于A层的)。 这是你的问题最可能的原因

PS: docker images -a可能会给你一些亮光(不太可能)。 曾经有一个“树”转换来帮助处理这种情况,但不幸的是现在已经不存在了


清理已弃用的Docker容器和不推荐使用的图像层是一种直截了当的方式

 #!/usr/bin/env bash set -euo pipefail for c in $(docker ps -a -f status=exited -f status=created -f status=dead --format="{{.ID}}"); do docker rm $c done for img in $(docker images -f dangling=true --format="{{.ID}}"); do docker rmi $img done