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 缓存时,请考虑以下事项:
Artifact Registry 仅充当您存储在 Docker Hub 上的映像的缓存。它不会验证、扫描或修复从 Docker Hub 缓存的映像中的漏洞。 Google Cloud 您有责任确保您存储在 Docker Hub 上的映像符合您组织的安全和合规性要求。如果您需要主动漏洞 扫描,请考虑使用 Artifact Analysis。
Artifact Registry 缓存旨在提高稳定性,并且不会在映像从 Docker Hub 中移除后立即清除映像。 从 Docker Hub 中删除的映像可能会在 Artifact Registry 缓存中保留长达数天,然后才会从缓存中移除。 Google Cloud 预先配置缓存 使用情况的服务(例如 Cloud Build 和 Google Kubernetes Engine)可能会继续 自动使用 Artifact Registry 缓存中未清除的映像。
后续步骤
- 您可以创建 Artifact Registry 远程代码库来缓存 Docker Hub 映像。
- 您可以创建自己的本地 Docker 镜像来缓存映像。如需了解详情,请参阅 Docker 文档。
- 请阅读 Docker Hub 文档。