在我发现的有关Docker注册表的每个教程中,都有这样的命令:
docker run -d -p 5000:5000 --name registry registry:2
在这里使用标记 2 。为什么?我尝试了没有标签的 registry ,它也有效。 我认为这与Docker注册表的不同API(?)有关,但我不确定。
答案 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.1
,2.7
,2
。
因此,当Docker Inc.发布注册表V3
时,latest
标签将指向V3
,如果您具体需要V2
,则必须将其明确添加到命令中。您可以检查the available tags for the registry image