如何使用相同的imageID删除多个docker镜像?

时间:2015-10-05 08:41:49

标签: image docker containers

我创建了一个local docker registry,然后从docker hub中提取了一些docker镜像,然后将它们推送到本地注册表。现在我想删除我的本地图像。但问题是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 version 1.8.2, build 0a8c2e3

  • docker rmi 810001cb03af的输出:

    来自守护程序的错误响应:冲突,无法删除图像810001cb03af,因为它被标记在多个存储库中,使用-f强制错误:无法删除图像:[810001cb03af]

  • 如果我docker rmi -f 81000它会删除它们,我需要再拉一次。

8 个答案:

答案 0 :(得分:43)

这是一种可以做到这一点的方法。运行命令:

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

其中810001cb03af是您的图片ID。

答案 1 :(得分:22)

这是一种方式:

可以向" docker rmi"提供存储库和标签数据。如果图像ID相同,则删除图像的命令。

命令

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

例如

docker rmi test-nginx:latest ubuntu:latest

注意:需要对图像进行适当的命名和标记,以便有效地使用上述命令来满足问题中提到的要求。

请参阅Docker文档以获取" docker rmi"命令帮助:here

答案 2 :(得分:10)

此方案在rmi command documentation

中完全描述
  

您可以使用短ID或长ID,其标记或摘要删除图像。如果图像有一个或多个引用它的标记,则必须在删除图像之前删除所有标记。通过标记删除图像时,将自动删除摘要引用。

鉴于,

$ 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 test1

Untagged: test1:latest

$ docker rmi test2

Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

或者,强迫它:

$ docker rmi -f fd484f19954f

Untagged: test1:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

注意:这些不是具有相同ID的多个图片。这实际上是在多个存储库中引用的一个图像(即给定多个名称/标签)

答案 3 :(得分:7)

运行以下命令以使用相同的 IMAGE ID 删除多个泊坞窗图像。

sudo docker rmi -f **IMAGE ID**

答案 4 :(得分:1)

您可以使用docker rmi IMAGE_NAME:TAG_NAME命令,它将起作用。

答案 5 :(得分:1)

您可以通过多种方式删除。

a)仅删除一个:

$ sudo docker rmi login(REPOSITORY NAME):latest(TAG NAME)

b)使用-f命令删除所有具有匹配ID的对象:

$ sudo docker rmi -f 91dfd8adbf04(IMAGE ID)

答案 6 :(得分:0)

我刚刚登陆Docker文档,我认为这也可以做到

  

RMI

您可以使用短ID或长ID,其标记或摘要删除图像。如果图像具有一个或多个标记或摘要参考,则必须在删除图像之前删除所有图像。

所以不是使用ID你可以做这样的事情---

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

答案 7 :(得分:0)

您应尝试使用摘要

删除图像
    $ docker images --digests

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

    $ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
     Untagged: localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf

    Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125
    Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
    Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b