如何在Docker中删除图像标签而不删除图像本身?


134

假设我要标记Docker映像并输入错误。如何删除标签而不删除图像本身?手册页和Docker文档均未提及删除标签。

docker tag 0e5574283393 my-imaj
docker tag 0e5574283393 my-image
# docker untag my-imaj # There is no "docker untag"!

4
对于那些想要<none>取消标记的图像的人,例如foo/bar:<none>:使用,docker images --digestsdocker rmi foo/bar@<digest>success.docker.com/KBase/…中进行了
Janaka Bandara

Answers:


194

如果您的图片被标记了多个标签,docker rmi则将删除标签,但不会移除图片。

所以在你的例子中...

# docker rmi my-imaj

...将删除该标签,并在图像中显示其他正确的标签。


4
谢谢。我希望他们在文档中提到这一点:-/
Mihai 2015年

2
如果我要删除的标签是最后一个,则图像将被删除。因此,我想知道主题中问题的答案是什么?如何删除标签并保持图像缓存?
kub1x

4
答案是一如既往的使用--help,不要偷懒阅读。docker image remove --no-prune..如果有人感兴趣。
kub1x

4
这是错误的,它只是删除了我的图像。幸运的是,知道docker我已经可疑了,并在之前使用创建了一个备份docker save
user259412 '18 -10-9

2
@peterh答案明确指出If your image is tagged with more than one tag...,但是应该使用注释中的命令进行更新,该命令解释了如何删除最后一个标签而不删除图像。
BrainSlugs83


17

从一个空的docker存储库开始,输入以下内容导入映像:

#docker run hello-world

运行docker images命令以列出图像。结果应如下所示:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

现在,通过运行以下命令来创建一个名为v1的图像标签docker tag

#docker tag hello-world:latest hello-world:v1

如果运行docker images命令,我们将看到如下所示的新标记:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB
hello-world         v1          7bc42cc48a84      4 weeks ago       316MB

要删除特定标签(以回答原始问题),请运行docker rmi hello-world:v1,其中v1是标签名称。输出将如下所示:

#docker rmi hello-world:v1
Untagged: hello-world:v1

运行docker images命令以列出图像。请注意,图像标签已被删除:

REPOSITORY        TAG           IMAGE ID          CREATED           SIZE
hello-world       latest        7bc42cc48a84      4 weeks ago       316MB

至少三年后的模棱两可方法。+1
bvj

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.