为什么标签似乎与注册表的主机名紧密耦合?

Knu*_*sen 7 docker

我一直在阅读很多关于如何设置和使用我自己的私有docker注册表的教程.

让我感到困惑的一件事是我用标记图像的标签似乎与注册表的主机名紧密耦合.

docker tag <imageid> registry.mycompany.com:5000/myrepo:tag
docker push registry.mycompany.com:5000/myrepo:tag
Run Code Online (Sandbox Code Playgroud)

这看起来非常违反直觉.如果注册表必须移动到不同的主机名,会发生什么?或者,如果我使用不同的主机名,无论我是否在内部/外部访问服务器?

对我来说更直观的是在推/拉时指定注册表:

docker tag <imageid> myrepo:tag
docker push myrepo:tag --registry=registry.mycompany.com
docker pull myrepo:tag --registry=registry.mycompnay.com
Run Code Online (Sandbox Code Playgroud)

这是什么理由?我错过了哪些关键信息?

Adr*_*uat 4

URL/注册表名称本质上是图像的“命名空间”。如果您不指定注册表,则假定该映像属于 Docker Hub。实际上,这意味着 Docker 公司控制着全局命名空间。

如果不这样做,您可能会在具有相同名称的不同主机上拥有两个完全不同的“推送”映像,这是 Docker 希望避免的事情。

注册表服务器的移动是一个合理的问题,因此我建议您尝试使用域名而不是 IP 进行注册表。