制作图像后如何添加docker标签

Gre*_*reg 5 docker dockerfile

我知道Dockerfile中有一个LABEL。但是我想知道在构建图像后如何向图像添加其他标签?这可能吗?

oxy*_*oxy 6

确实不可能在现有图像上添加标签。严格来说,添加标签会更改图像的校验和,从而更改其ID,因此不再是同一图像。

但是,您可以在现有图像的基础上添加标签创建图像,然后使用先前存在的图像的名称标记该图像。从技术上讲,它会在现有图像之上添加一层,从而仅“覆盖”先前的标签。

也可以使用单个命令来执行此操作。假设您要向图像“ debian:latest”添加标签,则可以该图像构建并同时标记新图像。

echo "FROM debian:latest" | docker build --label my_new_label="arbitrary value" -t "debian:latest" -
Run Code Online (Sandbox Code Playgroud)

证明“添加”标签有效:

$ docker inspect -f "{{json .Config.Labels }}" debian:latest
{"my_new_label":"arbitrary value"}
Run Code Online (Sandbox Code Playgroud)


use*_*097 -3

docker 背后的想法是,你有一个 Dockerfile,并且可以很容易地再次构建你的镜像,添加一个标签。

您可以破解该图像,但这不值得。

修改(稍微)你的 Dockerfile,然后再次运行

docker build -t mytag .

  • 如果您试图说正确的途径是将标签添加到 Dockerfile,然后重建整个映像,确保先前构建的层将被重用,那么您的答案根本无法解释这一点。事实上,对于一个不太了解 Docker 的人来说,你的答案可能会让人觉得 `-t mytag` 是添加标签的方式,而实际上它并不是这样做的——它是在标记一个新构建的镜像。 (3认同)