我在努力
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
正如这里所解释的,我使用以下方法来识别依赖图像并删除它们,
image_id=123456789012
docker images -a -q --filter since=$image_id |
xargs docker inspect --format='{{.Id}} {{.Parent}}'
你会看到类似这样的输出:
sha256:f7ef19862215ec0bf7a6b103504d213e1c001691703808f4154689cfbb5f14f9 sha256:a7d2efad2847bd10e5223980ed80f5781c716eddbf6131a3cf97614e7f2db97f
sha256:03690ae141346203959d0ae1b3e8d34b7a4232095d774af57dda6282fce99cc4 sha256:5713074659bb5352496ea680a903eba2f66e0495538c9db37336f4ba92994ea8
sha256:311f587811942d328edc52e5953d794eb9b81fe392512080d9fc1d350a6b2024 sha256:aa674f7f2621946db257720c378377b8714739d20879542d875b84c53b59bc75
然后你可以逐个删除这些图片,如下所示:
docker image rm f7ef19862215ec0bf7a6b103504d213e1c001691703808f4154689cfbb5f14f9
输出类似如下所示的内容:
Untagged: prathap/cognitive_robotics_gpu:v1
Untagged: prathap/cognitive_robotics_gpu@sha256:db6e7543a13e9a96241c985b9b3145b8fd65effb68c183301385b495875f1a5a
Deleted: sha256:03690ae141346203959d0ae1b3e8d34b7a4232095d774af57dda6282fce99cc4
Deleted: sha256:263f655670436758f8e3f23f31170083fc8d60c4eebe01a5b3fda1e73bed3ad1
图像层:存储库通常被称为图像或容器图像,但实际上它们由一个或多个层组成。存储库中的映像层以父子关系连接在一起。每个图像层表示自己和父层之间的变化。
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
假设我们有一个Dockerfile
FROM ubuntu:trusty
CMD ping localhost
我们在没有TAG或命名的情况下构建图像
docker build .
现在我们有一个成功报告“成功构建57ca5ce94d04”
如果我们看到docker图像
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 57ca5ce94d04 18 seconds ago 188MB
ubuntu trusty 8789038981bc 11 days ago 188MB
我们需要先移除
Docker rmi 57ca5ce94d04
紧随其后的是
docker rmi 8789038981bc
由该图像将被删除!
某人建议的强制迁移
docker rmi $(docker images -q) -f