Container Registry 会在 mirror.gcr.io
上缓存经常访问的公共 Docker Hub 映像。您可以配置 Docker 守护程序以使用缓存的公共映像(如果有),或者从 Docker Hub 拉取映像(如果缓存副本不可用)。
在尝试从 Docker Hub 中拉取映像之前,Cloud Build 和 Google Kubernetes Engine 等 Google Cloud 服务会自动检查是否存在缓存的映像。
mirror.gcr.io
上的缓存映像为:
- 存储在 Google 管理的代码库中。
- 不易受 Docker Hub 服务中断影响。
- 与 Google Cloud 生态系统轻松集成。
- 与 Docker Hub 保持同步。
配置 Docker 守护程序
要将 Docker 守护程序配置为从 Container Registry 缓存中拉取映像,请执行以下操作:
CLI
使用以下方法之一配置守护程序:
如需在启动时自动配置 Docker 守护进程,请在
/etc/docker/daemon.json
中设置以下值{ "registry-mirrors": ["https://mirror.gcr.io"] }
在启动守护程序时,传入 Container 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
拉取缓存的映像
Container Registry 会将经常请求的映像添加到缓存中,以供未来请求使用。它还会定期移除不再被请求的映像。
将 Docker 守护程序配置为使用 Container Registry 缓存后,当您使用 docker pull
命令拉取公共 Docker Hub 映像时,Docker 会执行以下步骤:
- Docker 守护程序守护进程会检查 Container Registry 缓存并提取相关映像(如果存在)。如果守护程序配置包含其他 Docker 镜像,守护程序会检查每个镜像,以便获取映像的缓存副本。
- 如果仍未找到该映像,Docker 守护进程将从 Docker Hub 上的规范代码库中提取该映像。
拉取缓存的映像不会计入 Docker Hub 速率限制。但是,无法保证特定映像将会长时间保持缓存状态。通过配置 Docker 守护程序,仅在 mirror.gcr.io
上获取缓存的映像。如果映像的缓存副本不存在,则直接从 mirror.gcr.io
拉取的请求将会失败。
后续步骤
- 您可以创建自己的本地 Docker 镜像来缓存映像。如需了解详情,请参阅 Docker 文档。
- 请阅读 Docker Hub 文档。