【问题标题】:What exactly is a Docker repository?Docker 存储库到底是什么?
【发布时间】:2014-12-28 14:00:05
【问题描述】:

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

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

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

【问题讨论】:

  • 只是为了迂腐;存储库存储 图像,而不是 容器
  • 谢谢@AdrianMouat,你是对的。我在语言的使用上很草率。我已经编辑和更正了。

标签: docker dockerhub


【解决方案1】:

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

【讨论】:

  • 谢谢。我想唯一的问题是只有一个“最新”,所以我们必须专门为每个容器指明标签。
【解决方案2】:

我相信答案是 Docker 存储库是一组带标签的映像版本。

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

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

【讨论】:

  • 如果 docker 文档建议存储库应仅包含 1 个 Dockerfile,那将会有所帮助。然后解释说存储库是指从该 Dockerfile 构建的所有不同图像(版本)。
【解决方案3】:

根据Docker Doc

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

将本地映像与注册表中的存储库相关联的符号是 用户名/存储库:标签。

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

docker tag friendlyhello username/repository:tag

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2014-12-05
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多