删除具有依赖儿童图像的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