Docker注册表和存储库之间的区别

Docker注册表和存储库之间的区别,docker,Docker,我对docker注册表和存储库之间的区别感到困惑。Docker文档似乎可以互换使用这两个词。此外,存储库有时被称为图像,例如来自其文档的图像: 为了将存储库推送到其注册表,您需要指定 正如我们在这里看到的,一个映像或将您的容器提交到一个命名映像 现在,您可以将此存储库推送到由其 名字或标签 如何将存储库推送到注册表?您不是正在将映像推送到存储库吗 Docker registry是一项存储Docker图像的服务。 Docker注册表可以由第三方托管,如公共或私有注册表,如以下注册表之一: , ,

我对docker注册表和存储库之间的区别感到困惑。Docker文档似乎可以互换使用这两个词。此外,存储库有时被称为图像,例如来自其文档的图像:

为了将存储库推送到其注册表,您需要指定 正如我们在这里看到的,一个映像或将您的容器提交到一个命名映像

现在,您可以将此存储库推送到由其 名字或标签


如何将存储库推送到注册表?您不是正在将映像推送到存储库吗

Docker registry是一项存储Docker图像的服务。

Docker注册表可以由第三方托管,如公共或私有注册表,如以下注册表之一:

  • ,
  • ,
  • ,
或者您可以自己主持docker注册表
(有关更多详细信息,请参阅)

Docker repository是具有相同名称、具有不同标记的不同Docker图像的集合。标记是存储库中图像的字母数字标识符

例如,请参见。官方python映像有许多不同的标记,这些标记都是Docker Hub上官方python存储库的成员。Docker Hub是Docker托管的Docker注册表

要了解更多信息,请阅读:

来自本书

注册表、存储库、图像和标记

有一个用于存储图像的分层系统。 使用以下术语:

注册表

负责托管和分发图像的服务。默认注册表是Docker Hub

存储库

相关映像的集合(通常提供同一应用程序或服务的不同版本)

标记

附加到存储库中图像的字母数字标识符(例如,14.04或稳定)


因此,命令
docker pull amouat/revealjs:latest
将从docker Hub注册表下载
amouat/revealjs
存储库中标记为latest的图像。

补充信息:

  • 通常将存储库推送到注册表(以及其中的所有映像)。但您可以将单个图像推送到注册表。在所有情况下,都使用
    docker push
  • 图像具有12个十六进制数字的图像ID,但也通过以下方式标识:
    namespace/repo name:tag
  • 映像全名可以选择以注册表主机名和端口作为前缀:
    myregistryhost:5000/namespace/repo name:tag
  • 一个常见的命名约定是使用您的注册表用户名作为我所称的“名称空间”
      docker存储库是
      注册表
      图像
      的巧妙组合

      docker tag foo <registry>/<image>:<tag>
      
      docker tag foo/:
      

      docker tag foo <repository>:<tag>
      
      docker标签foo:
      
      Docker Registry是一项服务,您可以自己托管(受信任和私有),也可以让Docker hub作为此服务的主机。通常,如果您的软件是商业性的,那么您将作为“私有且受信任”的注册表来托管它。对于Java开发人员来说,这有点类似于Maven Artifactory设置

      Docker Repository是一组“标记”图像。例如,您可能已经标记了5张
      ubuntu:latest
      图像:

      a) Nano编辑器(image1_标签:v1)

      b) 特定软件1(图像1_标签:v2)

      c) Sudo(图像1_标签:v3)

      d) apache http守护程序(image1_标记:v4)

      e) tomcat(图像1_标签:v5)

      您可以使用
      docker push
      命令将上述每个图像推送到存储库中。只要存储库名称匹配,它们就会被成功推送,并显示在您选择的存储库下并正确标记

      现在,您的问题是,“那么这个存储库托管在哪里/谁在管理服务”?这就是Docker注册表出现的地方。默认情况下,您将获得一个docker hub注册表(开源),您可以使用它来保存您的私有/公共存储库。因此,无需任何修改,您的图像将被推送到docker hub中的私有存储库中。按下图像标记时的输出示例如下:

      docker@my-docker-vm:/$ docker push mydockerhub/my-helloworld-repo:my_tag
      The push refers to repository [docker.io/mydockerhub/my-helloworld-repo]
      bf41e934d39d: Pushed
      70d93396f87f: Pushed
      6ec525dfd060: Pushed
      705419d10b13: Pushed
      a4aaef726d02: Pushed
      04964fddc946: Pushed
      latest: digest: sha256:eb93c92351bce785aa3ec0de489cfeeaafd55b7d90adf95ecea02629b376e577 size: 1571
      docker@my-docker-vm:/$
      

      如果您立即键入docker images--digests--a,您可以确认推送的图像标签现在显示了docker hub registry管理的私有存储库的新签名。

      docker hub和其他第三方存储库托管服务称为“注册表”。注册表存储存储库的集合


      因为一个注册表可以有多个存储库,并且一个存储库可以有同一映像的多个不同版本,每个版本都有标记。

      Docker映像注册表是存储所有Docker映像的地方。图像注册表允许您根据需要推拉容器图像

      注册表可以是私有的,也可以是公共的。当注册是公共的时,图像将与全世界共享,而在私有注册中,图像仅在企业或团队成员之间共享


      注册表使Docker守护进程能够轻松地提取和运行Docker映像。

      Artifactory是添加到列表中的一个;)我们使用它,这是Artifactory的链接-docker中的存储库和图像之间的区别是什么?存储库可以存储多个不同的图像,并用标记进行标记。为什么一个图像有多个标记是有意义的?docker图像与docker存储库的区别是什么?对于图像与存储库:如果您知道
      git
      ,然后-Docker注册表(默认值为
      hub.Docker.com
      )=>GitHub(
      GitHub.com
      );-Docker Repository=>Git Repository;-Docker Tag=>Git Ref(分支/标记)以更好地将Docker映射到Git:•Docker Registry=Git Server•Docker Rep