如何将多个标签附加到一个Docker映像上?是否可以使用一个Dockerfile创建多个标签?

这在某种程度上是可能的;例如,docker pull ubuntu会得到几个图片,其中一些有多个标签:

ubuntu                  13.10               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  saucy               9f676bd305a4        2 weeks ago         182.1 MB
ubuntu                  raring              eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  13.04               eb601b8965b8        2 weeks ago         170.2 MB
ubuntu                  12.10               5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  quantal             5ac751e8d623        2 weeks ago         161.4 MB
ubuntu                  10.04               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  lucid               9cc9ea5ea540        2 weeks ago         183 MB
ubuntu                  12.04               9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  latest              9cd978db300e        2 weeks ago         204.7 MB
ubuntu                  precise             9cd978db300e        2 weeks ago         204.7 MB

当前回答

怎么不去做呢!:

在构建映像时,您也可以这样标记它。

docker build -t ubuntu:14.04 .

然后你用另一个标签再次构建它:

docker build -t ubuntu:latest .

如果Dockerfile很好地利用了缓存,应该会显示出相同的图像,并且它有效地执行了与重标记相同的图像相同的操作。如果您使用docker映像,那么您将看到它们具有相同的ID。

不过,在某些情况下,这可能会出错…… 但是就像@david-braun说的,你不能用Dockerfiles本身创建标签,只能用docker命令。

其他回答

自1.10发布以来,你现在可以在构建时一次添加多个标签:

docker build -t name1:tag1 -t name1:tag2 -t name2 .

源代码:增加了在docker构建时添加多个标签的能力

Docker官方文档:https://docs.docker.com/engine/reference/commandline/build/#tag-an-image--t

你不能用Dockerfiles创建标签,但是你可以通过命令行在你的图像上创建多个标签。

用这个列出你的图片id:

$ docker images

然后标记:

$ docker tag 9f676bd305a4 ubuntu:13.10
$ docker tag 9f676bd305a4 ubuntu:saucy
$ docker tag eb601b8965b8 ubuntu:raring
...

怎么不去做呢!:

在构建映像时,您也可以这样标记它。

docker build -t ubuntu:14.04 .

然后你用另一个标签再次构建它:

docker build -t ubuntu:latest .

如果Dockerfile很好地利用了缓存,应该会显示出相同的图像,并且它有效地执行了与重标记相同的图像相同的操作。如果您使用docker映像,那么您将看到它们具有相同的ID。

不过,在某些情况下,这可能会出错…… 但是就像@david-braun说的,你不能用Dockerfiles本身创建标签,只能用docker命令。

标签必须是repo范围:

我尝试了接受的答案,但我的标签被忽略,只是“最新”标签产生。

回顾日志,我看到了一个错误是呕吐在最后关于缺乏范围,所以意识到我需要在名称:标签前添加我的用户名:

表格应该是:

-t <dockerhub uname>/name1:tag1 -t <dockerhub uname>/name1:tag2 etc...

ie:从buildx命令推送到Docker Hub,我们将标记如下:

docker buildx build --no-cache --platform linux/arm64 --push -t f1linux/postfix:3.7.2-r0 . -t f1linux/postfix:aarch64 -t f1linux/postfix:arm64