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

时间:2015-11-30 17:09:09

标签: docker

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

  

为了将存储库推送到其注册表,您需要命名   我们在这里看到的图像或将容器提交到命名图像。

     

现在您可以将此存储库推送到其指定的注册表中   名称或标签。

如何将存储库推送到注册表?你不是把图像推到存储库吗?

7 个答案:

答案 0 :(得分:130)

Docker注册表是一种存储泊坞窗图像的服务。

Docker注册表可以由第三方托管,如公共或私人注册管理机构,如下列注册管理机构之一:

或者您可以自己托管docker注册表 (有关详细信息,请参阅https://docs.docker.com/docker-trusted-registry/。)

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

例如,请参阅https://hub.docker.com/r/library/python/tags/。官方python图像有许多不同的标签,这些标签都是Docker Hub上官方python存储库的成员。 Docker Hub是Docker托管的Docker注册表。

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

答案 1 :(得分:51)

从书Using Docker, Developing and deploying Software with Containers

注册管理机构,存储库,图片和代码

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

<强>注册表

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

存储库

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

标记

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

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

答案 2 :(得分:7)

补充资料:

  • 您通常会将存储库推送到注册表(以及属于它的所有图像)。但您可以将单个图像推送到注册表。在所有情况下,您都使用docker push
  • 图片具有12位十六进制数字图片ID,但也标识为:namespace/repo-name:tag
  • 图像全名可以选择以注册表主机名和端口作为前缀:myregistryhost:5000/namespace/repo-name:tag
  • 一个常见的命名约定是将您的注册表用户名用作我所称的&#34; namespace&#34;。

答案 3 :(得分:0)

docker存储库是registryimage的可爱组合。

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

相同
docker tag foo <repository>:<tag>

答案 4 :(得分:0)

Docker Registry是一项服务,您可以自己托管(可信和私有),也可以让docker hub成为此服务的主机。通常,如果您的软件是商业软件,那么您将把它作为“私有和可信”注册表托管。对于Java Developers,这有点类似于Maven Artifactory设置。

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

a)Nano编辑器(image1_tag:v1)

b)特定软件1(image1_tag:v2)

c)Sudo(image1_tag:v3)

d)apache http守护进程(image1_tag:v4)

e)tomcat(image1_tag:v5)

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

现在,您的问题是,“那么这个存储库在哪里托管/谁在管理服务”?这就是Docker Registry的用武之地。默认情况下,您将获得一个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注册管理的私有存储库的新签名。

答案 5 :(得分:0)

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

因为注册中心可以具有许多存储库,并且存储库可以具有同一映像的许多不同版本,这些版本分别使用标签进行版本控制。

答案 6 :(得分:0)

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

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

注册表使Docker守护程序可以轻松拉出并运行您的Docker映像。