Artifact Registry 会在 mirror.gcr.io
上缓存经常访问的公共 Docker Hub 映像。您可以配置 Docker 守护程序以使用缓存的公共映像(如果有),或者从 Docker Hub 拉取映像(如果缓存副本不可用)。
mirror.gcr.io
上的缓存映像为:
- 存储在由 Google Cloud管理的代码库中。
- 不易受 Docker Hub 服务中断影响。
- 与 Google Cloud 生态系统集成。
- 与 Docker Hub 保持同步。
配置 Docker 守护程序
如需将 Docker 守护程序配置为从 Artifact Registry 缓存中拉取映像,请执行以下操作:
CLI
使用以下方法之一配置守护程序:
如需在启动时自动配置 Docker 守护进程,请在
/etc/docker/daemon.json
中设置以下值{ "registry-mirrors": ["https://mirror.gcr.io"] }
在启动守护程序时,传入 Artifact Registry 主机名:
dockerd --registry-mirror=https://mirror.gcr.io
将以下行添加到
/etc/default/docker
文件中:DOCKER_OPTS="${DOCKER_OPTS} --registry-mirror=https://mirror.gcr.io"
重启 Docker 守护程序。
在 Linux 上,运行以下任一命令:
sudo service docker restart
或
sudo service docker stop && sudo service docker start
在 macOS 或 Windows 上,运行以下命令:
docker-machine restart
Docker 界面
- 打开 Docker 的偏好设置菜单。
- 点击守护进程。
点击高级。在 JSON 字段中,添加一个值为
https://mirror.gcr.io
的registry-mirrors
键:{ "registry-mirrors" : [ "https://mirror.gcr.io" ] }
点击应用并重启 (Apply & Restart)。
如需验证缓存是否已正确配置,请运行以下命令:
docker system info
输出应包含 Registry Mirrors
,并且应类似如下所示:
Containers: 2
Running: 0
Paused: 0
Stopped: 2
Images: 2
Server Version: 17.03.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
...
Registry Mirrors:
https://mirror.gcr.io
拉取缓存的映像
Artifact Registry 会将经常请求的映像添加到缓存中,以供未来请求使用。它还会定期移除不再被请求的映像。
将 Docker 守护程序配置为使用 Artifact Registry 缓存后,当您使用 docker pull
命令拉取公共 Docker Hub 映像时,Docker 会执行以下步骤:
- Docker 守护程序会检查 Artifact Registry 缓存并提取相关映像(如果存在)。如果守护程序配置包含其他 Docker 镜像,守护程序会检查每个镜像,以便获取映像的缓存副本。
- 如果仍未找到该映像,Docker 守护进程将从 Docker Hub 上的规范代码库中提取该映像。
拉取缓存的映像不会计入 Docker Hub 速率限制。但是,无法保证特定映像将会长时间保持缓存状态。通过配置 Docker 守护程序,仅在 mirror.gcr.io
上获取缓存的映像。
如需对未缓存在 mirror.gcr.io
上的映像进行 Docker Hub 身份验证,请使用 Artifact Registry 远程代码库。远程仓库支持对 Docker Hub 进行身份验证。我们建议您对 Docker Hub 进行身份验证,即使您只使用公开映像也是如此,因为这样可以提高下载速率限制。如需详细了解 Docker Hub 下载速率限制,请参阅 Docker Hub 速率限制。
后续步骤
- 您可以创建 Artifact Registry 远程代码库来缓存 Docker Hub 映像。
- 您可以创建自己的本地 Docker 镜像来缓存映像。如需了解详情,请参阅 Docker 文档。
- 请阅读 Docker Hub 文档。