我在努力

docker rmi c565603bc87f

错误:

来自守护进程的错误响应:冲突:无法删除c565603bc87f (不能强制)- image有依赖的子映像

所以我不能用-f标记删除image。如何删除图像,然后所有的孩子?

Linux和docker版本:

uname - Linux goracio-pc 4.4.0-24-generic #43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

码头工人版本 客户: 版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git提交:b9f10c9 建成:2016年6月1日星期三22:00:43 OS /拱:linux / amd64

服务器: 版本:1.11.2 API版本:1.23 Go版本:go1.5.4 Git提交:b9f10c9 建成:2016年6月1日星期三22:00:43 OS /拱:linux / amd64


当前回答

# docker rm $(docker ps -aq)

之后,按照阮的建议使用命令。

其他回答

在删除图像之前,您应该尝试删除不必要的图像:

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

之后,运行:

docker rmi c565603bc87f

如果在公司代理后面,请确保您没有遇到速率限制错误。

如果你碰巧安装了公司代理,并且使用Windows,你可能想尝试一下这个简单的修复方法。我在这里找到了一些有用的回答。然而,即使在运行docker映像修剪和其他命令之后,我仍然发现了一个可爱的错误(以及根本原因),这是之前掩盖的:“toomanyrequests: You have reached your pull rate limit…”

Fix.

打开Windows终端/DOS提示符,输入:

ipconfig /发行 [...] ipconfig /恢复

这可能会帮你省下和IT部门的电话/罚单。;)

图像层:存储库通常被称为图像或容器图像,但实际上它们由一个或多个层组成。存储库中的映像层以父子关系连接在一起。每个图像层表示自己和父层之间的变化。

docker构建模式使用继承。这意味着版本i依赖于版本i-1。因此,我们必须删除版本i+1才能删除版本i。这是一个简单的依赖关系。

如果你想删除所有图像,除了最后一个(最新的)和第一个(基础),然后我们可以导出最后一个(最新的一个)使用docker保存命令如下所示。

docker save -o <output_file> <your_image-id> | gzip <output_file>.tgz

然后,现在,使用image-id删除所有图像,如下所示。

docker rm -f <image-id i> | docker rm -f <image i-1> | docker rm -f <image-id i-2> ... <docker rm -f <image-id i-k> # where i-k = 1

现在,如下所示加载您保存的tgz图像。

gzip -c <output_file.tgz> | docker load

使用docker ps -q查看加载图像的image-id。它没有标签和名字。您可以简单地更新标签和名称,如下所示。

docker tag <image_id> group_name/name:tag

在某些情况下(比如我的例子),您可能试图通过指定具有多个您没有意识到存在的标记的图像id来删除图像,其中一些可能被其他图像使用。在这种情况下,您可能不想删除图像。

如果你有一个冗余标签的情况,如这里所述,而不是docker rmi <image_id>使用docker rmi <repo:标签>在你希望删除的冗余标签上。

只需简单地使用:

docker rmi <image:tag> -f

例如:

docker rmi ubuntu:latest -f 

将删除标签名为latest的映像名称ubuntu, -f是强制删除。

这对我很有效