5

我似乎无法找到 Docker 存储库的确切定义。标记的一般方法似乎是用户名/图像名。

当然,它包含 Docker 镜像,但是它们需要是同一镜像的不同版本还是可以是不同的 Docker 镜像?

例如,我是否可以将 App1、App2、... 保留在同一个 Docker 存储库中,并且只使用标签来区分它们。

4

3 回答 3

2

我相信答案是 Docker 存储库是一组标记的图像版本。

尽管它们在技术上似乎是语义上不同的图像,但差异可能由标签表示,这将是 1) 令人困惑,因为它们都具有相同的图像名称(对于人类和使用图像的软件来说令人困惑),以及 2 ) 据我所知,不符合存储库的预期用途,并且 3) 可能与 Docker Hub 托管公共和私有存储库的注册表的商业模式相反。

我从来没有打算尝试打破这种商业模式,我只是有点困惑,因为术语存储库通常意味着比单个概念实体更普遍的东西。Docker 提供了私有托管您自己的注册表的能力,其中包含许多存储库。

于 2014-12-29T13:54:07.170 回答
2

按照惯例,Docker 镜像被命名为<owner>/<application>:<tag>. 如果您想将不同的应用程序保留在同一个存储库下,则没有任何技术限制(即:除非您强制该关系,否则不必关联不同的标签),例如,您可以拥有mycompany/myuser:app1mycompany/myuser:app2. 但这不是您找到大多数像我之前指出的那样标记的公共图像的方式。

于 2014-12-28T14:30:01.550 回答
2

根据Docker 文档

注册表是存储库的集合,存储库是图像的集合——有点像 GitHub 存储库,除了代码已经构建。

将本地映像与注册表上的存储库相关联的符号是 username/repository:tag。

:tag 是可选的,但建议使用;它是注册中心用来为 Docker 镜像提供版本的机制。因此,将所有这些放在一起,输入您的用户名,以及 repo 和标签名称,以便您现有的图像将上传到您想要的目的地:

docker tag friendlyhello username/repository:tag

我还发现在这种情况下使用存储库这个词有点令人困惑。最后,存储库旨在包含映像的所有版本,标签latest用于指定将被拉取的映像,以防使用docker pull命令时未指定标签。

于 2017-06-02T14:27:04.753 回答