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

我一直在阅读很多关于如何设置和使用我自己的私人dockerregistry的教程。

有一件事让我难以接受,就是我用标签来标记图像的标签似乎与registry的主机名紧密相连。

docker tag <imageid> registry.mycompany.com:5000/myrepo:tag docker push registry.mycompany.com:5000/myrepo:tag 

这似乎是非常直观的。 如果registry必须移动到不同的主机名,会发生什么情况? 或者如果我使用不同的主机名,无论我是否在内部/外部访问服务器?

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

 docker tag <imageid> myrepo:tag docker push myrepo:tag --registry=registry.mycompany.com docker pull myrepo:tag --registry=registry.mycompnay.com 

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

URL /registry名称本质上是图像的“名称空间”。 如果您不指定registry,则认为该映像属于Docker Hub。 实际上,这意味着Docker Inc控制全局名称空间。

如果没有这样做,可以在具有相同名称的单独主机上有两个完全不同的“推送”图像,这是Docker想要避免的。

注册服务器的移动是一个有效的担心,所以我build议你尝试使用域名而不是IPregistry。

标记图像的标签似乎与registry的主机名紧密耦合。

不完全是:registry用于推送/拉出图像的registry服务器的URL。

即使您更改了服务器,您将用于推/拉的图像名称仍然是相同的,只有url更改(如library/registrydocker/docker-registry )。