我在努力
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构建模式使用继承。这意味着版本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
我有这个问题,这里没有一个简短的答案,即使在上面@tudor提到的页面。我想在这里分享一下我是如何摆脱这些图像的。我想出了一个想法,从属图像必须是>=父图像的大小,这有助于识别它,以便我们可以删除它。
我按大小列出了这些图片,看看是否能发现其中的相关性:
docker images --format '{{.Size}}\t{{.Repository}}\t{{.Tag}}\t{{.ID}}' | sort -h -r | column -t
它所做的是使用docker中的一些特殊格式来首先定位图像大小列,然后以相反的顺序运行人类可读的排序。然后恢复易于阅读的列。
然后我查看<none>容器,并将列表中的第一个容器与类似的大小匹配。我在该图像上执行了一个简单的docker rmi <image:tag>,所有<none>子图像都随它而去。
所有子映像的问题映像实际上是我第一次开始使用docker时使用的该死的myrepo/getstart -lab映像。这是因为我从第一个创建链的测试图像中创建了一个新图像。
希望这能在某种程度上帮助到其他人。