我对docker注册表和存储库之间的区别感到困惑。似乎Docker文档可以互换使用这两个词。此外,存储库有时也称为图像,例如来自他们的文档:
为了将存储库推送到其注册表,您需要命名 我们在这里看到的图像或将容器提交到命名图像。
现在您可以将此存储库推送到其指定的注册表中 名称或标签。
如何将存储库推送到注册表?你不是把图像推到存储库吗?
答案 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
。namespace/repo-name:tag
myregistryhost:5000/namespace/repo-name:tag
答案 3 :(得分:0)
docker存储库是registry
和image
的可爱组合。
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映像。