Docker:获取主机上配置的所有注册表的列表

Han*_*gon 10 docker docker-registry

docker 是否可以同时连接到多个注册表以及如何找出它当前也连接了哪些注册表?

$ docker help | fgrep registr
login       Log in to a Docker registry
logout      Log out from a Docker registry
pull        Pull an image or a repository from a registry
push        Push an image or a repository to a registry
Run Code Online (Sandbox Code Playgroud)

如您所见,没有列出注册表的选项。我确实通过运行找到了一种方法:

$ docker system info | fgrep -i registr
 Registry: https://index.docker.io/v1/
Run Code Online (Sandbox Code Playgroud)

那么...一次仅一个注册表?这不像是apt可以指向多个来源的地方吗?任何人都可以向我指出一些关于 docker 和注册表的好文档吗?

奇怪的是,我在网上搜索没有结果。

Dav*_*aze 14

除此之外,Docker本身docker login并不“连接到注册表” 。注册表名称是映像名称的一部分,如果 Docker 需要拉取映像,则会连接到注册表服务器。

作为一个具体示例,Elasticsearch 的官方 Docker 映像位于 Elastic 运行的非默认注册表中。该文档中的示例是

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.0
#           ^^^^^^^^^^^^^^^^^
#           registry host name
Run Code Online (Sandbox Code Playgroud)

您不需要以其他方式配置系统来连接到该注册表、下载索引或其他任何内容。事实上,您甚至不需要这个docker pull命令;如果直接下载docker run镜像,如果本地没有副本,Docker 会下载它。

默认注册表是 Docker Hub,docker.io并且无法更改

有几个备用注册表。各个公共云提供商都有自己的,而且还有几个独立的映像注册表。每个都有自己的设置说明。您始终需要包含注册表名称作为映像名称的一部分。例如,Google 容器注册表具有简单的名称语法,因此如果您使用 GCR,那么您可以

# build an image locally, labeled to be stored in GCR
# (this step does not contact or use GCR at all)
docker build gcr.io/my-name/my-image:tag

# authenticate to the registry
# (normally GCR has a Google-specific login sequence)
docker login https://gcr.io

# push the image
docker push gcr.io/my-name/my-image:tag

# run the image, pulling it if not present
docker run ... gcr.io/my-name/my-image:tag
Run Code Online (Sandbox Code Playgroud)