2015-10-05 55 views
13

我创建了一个local docker registry,然后从docker hub中拖出一些docker镜像,然后将它们推送到本地注册表中。现在我想删除我的本地图像。但这里的问题是imageID的图像是相同的,我不能删除它们。我搜索了解决方案,但我找不到解决方案。如何使用相同的imageID去除多个码头图像?

>> docker images 

REPOSITORY      TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
localhost:5000/[repo1]  v-0.9.1    810001cb03af  4 weeks ago   594.6 MB 
[myaccount]/[repo1]   v-0.9.1    810001cb03af  4 weeks ago   594.6 MB 

因为您看到image ID对于这两个图像都是相同的。我怎样才能删除它们?

编辑

  • 我的搬运工版本:

    输出的docker rmi 810001cb03af

    Docker version 1.8.2, build 0a8c2e3

  • :从守护

    错误响应:冲突,不能删除图像810001cb03af,因为它是在多个存储库中标记,使用-ft o强制错误:无法删除图像:[810001cb03af]

  • 如果我做docker rmi -f 81000它将删除它们,我需要再次拉。
+0

'docker rmi 810001cb03af'返回什么?你使用的是什么版本的码头? – VonC

+0

@VonC我更新我的问题。我的码头是1.8.2。 “docker rmi 8100”的输出添加了 – Hadi

+0

@Constantine:答案是否能解决您的问题。对于阅读此问题的任何人或将来可能面临类似问题的人,反馈信息都会有帮助 – spectre007

回答

23

这里有一个方法可以做到这一点。运行命令:

docker images | grep 810001cb03af | awk '{print $1 ":" $2}' | xargs docker rmi 

其中'810001cb03af'是您的图像ID。

+2

您的方法将删除这两个图像。我想删除只是在本地的一个。 – Hadi

+0

那么你只想下载一个图像,而不是2?那么这个工作呢? 'docker rmi localhost:5000/[repo1]' – user2707671

+0

获取错误:grep:如果您没有安装grep,则不会将'grep'这个术语识别为cmdlet的名称 –

13

这里有一种方法:

库和标签数据可以被提供给“搬运工RMI”命令,如果图像ID是相同的,以除去图像。

命令

docker rmi [repository_name1]:[tag1] [repository_name2]:[tag2] 

例如

docker rmi test-nginx:latest ubuntu:latest 

注:一个需要以命名并适当地标记该图像有效地使用上述命令在问题中提到的要求。

参考泊坞文档为“泊坞窗RMI”命令的帮助:here

+0

对不起,这种方法没有奏效。我得到相同的冲突错误。 – Hadi

+0

指定存储库和标签而不是图像ID时为我工作 –

+0

正是我需要的。谢谢! – wogsland

0

我只是检查在泊坞窗文档和我想这是也可以做

rmi

可以使用其短或长的ID,它的标签,或者其摘要中删除的图像。如果图像具有一个或多个标记或摘要参考,则必须在图像移除之前将其全部移除。

因此而不是使用ID U可以做这样的事情---

$ docker rmi test1 Untagged: test1:latest $ docker rmi test2 Untagged: test2:latest

+0

你亲自尝试过吗?我已经尝试过了! – Hadi

+0

是的,我试过了... 当你做 码头rmi [myaccount]/[回购] 它会告诉你..... 无标签:[myaccount]/[回购1],并将删除图像... 我希望这是你想要的东西.. –

3

运行以下命令具有相同图片ID删除多个泊坞窗图像。

sudo docker rmi -f **IMAGE ID** 
0

你应该通过消化去除图像,

$ docker images --digests 

    REPOSITORY      TAG  DIGEST                 IMAGE ID  CREATED   SIZE 
    localhost:5000/test/busybox <none> sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 4986bf8c1536 

    $ docker rmi localhost:5000/test/[email protected]:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 
    Untagged: localhost:5000/test/[email protected]:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 

    Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125 
    Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2 
    Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b 
2

rmi command documentation

You can remove an image using its short or long ID, its tag, or its digest. If an image has one or more tag referencing it, you must remove all of them before the image is removed. Digest references are removed automatically when an image is removed by tag.

$ docker images 

REPOSITORY    TAG     IMAGE ID   CREATED    SIZE 
test1      latest    fd484f19954f  23 seconds ago  7 B (virtual 4.964 MB) 
test2      latest    fd484f19954f  23 seconds ago  7 B (virtual 4.964 MB) 

$ docker rmi fd484f19954f 

Error: Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories, use -f to force 
2013/12/11 05:47:16 Error: failed to remove one or more images 

$ docker rmi test1 

Untagged: test1:latest 

$ docker images 

REPOSITORY    TAG     IMAGE ID   CREATED    SIZE 
test2      latest    fd484f19954f  23 seconds ago  7 B (virtual 4.964 MB) 

$ docker rmi test2 

Untagged: test2:latest 
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8 

注意仔细描述这个场景:这些都不符合相同的多个图像ID。这实际上是一个在多个存储库中引用的映像(即给定多个标记)

相关问题