创建多个标签的Docker映像


147

docker pull ubuntu 将获得多个标签图像。

是否可以通过像ubuntu这样的一个Dockerfile创建多个标签?

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

在这里,我需要的是不同内容的标签。(具有多个别名标签的内容不同)


Answers:


79

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

使用此列表列出您的图片ID:

$ docker images

然后标记:

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

4
重点是在Dockerfile中,这些命令无法写入Dockerfile中。
Daniel YC Lin

1
请参阅此答案,以了解避免手动找出ID的方法。
乔纳森·莱因哈特

435

从1.10版本开始,您现在可以在构建时一次添加多个标签:

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

来源:添加了使用docker build添加多个标签的功能


5
我认为这是在构建过程中易于使用的更正确答案
braskkazoo

这是不适当的,因为ubuntu的标签用于不同版本,内容是不同的。
Daniel YC Lin

2
但是,如何在推送后将这些标签显示在存储库中?不幸的是,我在push命令中只使用了一个。
捷克学'18 / 09/19

3
即使在2018年底,Docker在这方面仍然非常不成熟,尽管每个``标签'' 都已附加到同一映像,但必须分别推入。这里需要的是一些类似于Git标签的功能。
艾德·兰德尔

-8

如何不这样做:

构建图像时,您也可以用这种方式标记它。

docker build -t ubuntu:14.04 .

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

docker build -t ubuntu:latest .

如果您的Dockerfile充分利用了缓存,则应该显示相同的映像,并且其效果与重新标记相同的映像相同。如果这样做,docker images您将看到它们具有相同的ID。

不过,在某些情况下这可能会出错...但是,就像@ david-braun所说的那样,您不能仅通过docker命令使用Dockerfiles本身创建标签。


3
我可能会补充说,像@ david-braun这样做比较干净。
木薯2014年

14
不要建造两次。看到这个答案
乔纳森·莱因哈特

两次构建打败了CI / CD的概念...第二次编译可能会有所不同,具体取决于依赖项...一切都在时间上。
理查德

4
现在,有了明确的“如何不做”标题,这个答案确实为理解它的工作原理增加了一些东西。
艾德·兰德尔
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.