繁体   English   中英

私有注册表和本地映像注册表之间的docker区别?

[英]docker difference between private registry and the local image registry?

我有些想法困扰着我。 运行docker images我会看到docker环境中的本地映像列表。 当提取图像时,我从注册表中提取它,更具体地说,是提取由存储库管理的指定标签。

  • 因此,有一个注册表作为存储所有图像存储库的重要枢纽
  • 并且存储库正在存储特定图像的提交/标记版本

但是, docker images是什么? 它也是一个注册表 ,不是吗? 它包含我在本地构建或提取的所有图像。

如果我的主张有效:

它如何符合运行私有注册表的要求(此处提到https://docs.docker.com/registry/deploying/

运行此docker run -d -p 5000:5000 --restart=always --name registry registry:2这个新注册表部署到我的docker images ...

所以现在我在注册表中有了一个注册表... registception 除了可部署自定义注册表之外,还有什么区别?

正如其他问题所指出的,它不是本地映像注册表。 这是图像缓存 映像缓存的目的是避免每次执行docker run时都每次都下载相同的映像。

docker images仅列出计算机上的所有缓存映像。 每当注册表上有更新的映像时,在执行docker pull ...时都会下载并缓存该映像(某些层)。 另外,当本地缓存中存在层时,docker会告诉您,例如:

Step 2/2 : CMD /bin/bash
 ---> Using cache

另一方面,泊坞窗注册表是用于存储映像的中央存储库。 它提供了一个远程api来拉和推图像。 本地图像缓存不具有此功能。 使用本地docker命令读取并存储本地缓存中的图像,该命令仅读取/ var / lib / docker /下的文件。

为了清楚起见,请将Docker远程注册表(例如Docker Hub)视为远程Git存储库。 您提取所需的Docker映像(如git存储库),然后使用它。

像GitHub \\ BitBucket这样的远程Git存储库一样,Docker注册表也是公共的和私有的。 公共注册表用于公共用途和开源项目。 例如Docker Hub中的例子。 私人注册表是供组织使用或供您自己使用的。 私有注册表的示例包括Azure容器注册表,EC2容器注册表等。

官方Docker Registry映像只是您自己系统Docker注册表映像 除非拥有服务器或公共Internet IP地址,否则您无法与他人共享它们。 将其视为Windows的Bonobo Private Git服务器。

正如您所提到的,本地映像注册表是您在本地构建或从注册表公共或私有注册表中提取的所有映像,您可以将其视为本地映像缓存,无需每次下载或重建即可重复使用。

运行注册表实际上是启动一个实现Docker Registry API的服务器,该服务器允许用户推,拉,删除和处理此图像及其层的存储。 像中央存储库(如npm,nexus)一样看到它

例如,如果您在your.registry.com:5000中运行注册表

你可以做类似的事情

docker build -t your.registry.com:5000/my-image:tag .
docker push your.registry.com:5000/my-image:tag

因此其他有权访问您服务器的人可以拉出它

docker pull your.registry.com:5000/my-image:tag

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM