如何取消设置 Docker 图像标签?

Ant*_*ean 9 docker dockerfile

我有一个以官方 nginx 图像开头的 Dockerfile 。

FROM nginx
Run Code Online (Sandbox Code Playgroud)

他们设置了维护者标签

LABEL maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>"
Run Code Online (Sandbox Code Playgroud)

所以,现在我的形象似乎也被他们维护了。

$ docker image inspect example-nginx
...
        "Labels": {
            "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
        },
Run Code Online (Sandbox Code Playgroud)

文档 提到了如何覆盖标签。但是,到目前为止,我能做的最好的事情就是将其设置为空值。

LABEL maintainer=
Run Code Online (Sandbox Code Playgroud)

$ docker image inspect example-nginx
...
        "Labels": {
            "maintainer": ""
        },
Run Code Online (Sandbox Code Playgroud)

如何完全删除取消设置由父图像设置的标签?

Wil*_*ins 10

很好的问题。我做了一些研究,据我所知,目前的 Docker/Moby 实现是不可能的。这也是其他属性的问题,正如您在此处看到的(问题来自 2014 年!):

https://github.com/moby/moby/issues/3465

我知道这真的很烦人,但是,如果您真的想删除它,可以尝试以下操作:

https://github.com/moby/moby/issues/3465#issuecomment-383416201

这个人用一个Python脚本自动化了这个过程,它似乎可以让你做你想做的事:

https://github.com/gdraheim/docker-copyedit

它似乎有删除标签操作(https://github.com/gdraheim/docker-copyedit/blob/92091ed4d7a91fda2de39eb3ded8dd280fe61a35/docker-copyedit.py#L304),这就是你想要的。

我不知道它是否有效(我没有时间测试),但我认为值得一试。