3

我想删除 docker 图像,但遇到如下错误消息:

来自守护程序的错误响应:冲突:无法删除 47bcc53f74dc(无法强制)- 图像具有依赖的子图像

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

我显示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图像?感谢您的任何建议。

4

1 回答 1

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
于 2016-10-13T05:33:11.443 回答