:2在运行Docker注册表时是什么意思?

时间:2019-03-06 10:44:33

标签: docker docker-registry

在我发现的有关Docker注册表的每个教程中,都有这样的命令:

docker run -d -p 5000:5000 --name registry registry:2
在这里使用

标记 2 。为什么?我尝试了没有标签的 registry ,它也有效。 我认为这与Docker注册表的不同API(?)有关,但我不确定。

2 个答案:

答案 0 :(得分:2)

您对API的看法是正确的。来自github.com/docker/distribution

  

发行版

     

用于打包,运送,存储和交付内容的Docker工具集。

     

该存储库的主要产品是用于存储和分发Docker映像的 Docker Registry 2.0 实现。它以安全性和性能为重点的新API设计取代了docker/docker-registry项目。

和:

  

注册表

     

Docker Registry HTTP API V2的实现,可与docker 1.6+一起使用。


为什么两者都起作用?

当您docker pull registry时,您实际上是pull registry:latest,它的摘要与registry:2相同。演示:

$ docker pull registry
Using default tag: latest
latest: Pulling from library/registry
169185f82c45: Already exists 
046e2d030894: Pull complete 
188836fddeeb: Pull complete 
832744537747: Pull complete 
7ceea07e80be: Pull complete 
Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b
Status: Downloaded newer image for registry:latest

$ docker pull registry:2
2: Pulling from library/registry
Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b
Status: Downloaded newer image for registry:2

答案 1 :(得分:2)

是的,您是对的!标签2代表Docker Registry v2实现,也是Docker Registry HTTP API V2。解决了V1中的几个问题,并引入了以下链接中所述的新功能:

通过删除2,docker将转到默认标签latest,该标签当前指向以下标签2.7.12.72。 因此,当Docker Inc.发布注册表V3时,latest标签将指向V3,如果您具体需要V2,则必须将其明确添加到命令中。您可以检查the available tags for the registry image