我想删除docker图片,但我遇到如下错误信息:
来自守护程序的错误响应:冲突:无法删除47bcc53f74dc (不能强制) - 图像具有依赖子图像
我通过docker stop $(docker ps -a -q)
命令停止所有容器。之后,我会通过docker rmi $(docker images | grep "busybox" | awk '{print $3}')
命令删除所有 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 图片?感谢您的任何建议。
答案 0 :(得分:2)
警告提示您某些容器仍然链接(继承)您要删除的Docker FS层。没有选项可以删除中间docker文件系统层,而无需根据这些层重新创建子映像。
说,你有这样的配置:
base_layer_A -> base_layer_B
\ \_ child_layer_D
\__ container C
...愿意删除容器C和A层。
您不能这样做(因为B层基于A层)。这是您遇到问题的最可能原因
PS:docker images -a
可能会给你一些启示(不太可能)。有一个' -tree'切换一次以帮助解决这种情况,但不幸的是现在它已经消失了
这是清理废弃的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