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

时间:2017-09-07 13:16:45

标签: docker docker-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 ? 除自定义注册表可以部署之外有什么区别?

3 个答案:

答案 0 :(得分:2)

其他问题指出,它不是本地图像注册表。它是图像缓存。图像缓存的目的是避免每次执行泊坞窗运行时都下载相同的图像。

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

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

另一方面,docker注册表是存储图像的中央存储库。它提供了一个远程api来拉动和推送图像。本地图像缓存没有此功能。使用本地docker命令读取和存储本地缓存中的映像,这些命令只读取/ var / lib / docker /...中的文件。

答案 1 :(得分:1)

为了清楚起见,可以将Docker远程注册表(例如Docker Hub)视为远程Git存储库。您可以使用所需的Docker镜像(如git存储库)并使用它。

与远程Git存储库(如GitHub \ BitBucket)一样,Docker注册表也是公共和私有的。公共注册表用于公共使用和开源项目。示例包括类似Docker Hub。私人注册管理机构用于组织使用或适用于您自己的注册机构。私有注册表的示例包括Azure Container Registry,EC2 Container Registry等。

官方Docker Registry映像只是一个 Docker注册表映像 适用于您自己的系统,除非您有服务器或服务器,否则您无法与他人共享它们公共互联网IP地址。可以把它想象成Windows的Bonobo Private Git Server。

答案 2 :(得分:1)

您提到的本地图像注册表是您在本地构建或从公共或私有注册表中提取的所有图像,您可以将其视为图像的本地缓存,您可以在不下载或重建每次的情况下重复使用。 / p>

运行注册表实际上做的是启动实现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