我心中有些东西在困扰着我。运行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 ? 除自定义注册表可以部署之外有什么区别?
答案 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