拉取缓存的 Docker Hub 映像

Artifact Registry 将经常访问的公共 Docker Hub 映像缓存在 mirror.gcr.io 上。您可以配置 Docker 守护程序以使用缓存的公共映像(如果有),或者从 Docker Hub 拉取映像(如果缓存副本不可用)。

在尝试从 Docker Hub 中拉取映像之前,Cloud Build 和 Google Kubernetes Engine 等 Google Cloud 服务会自动检查是否存在缓存的映像。

mirror.gcr.io 上的缓存映像为:

  • 存储在 Google 管理的代码库中。
  • 不易受 Docker Hub 服务中断影响。
  • 与 Google Cloud 生态系统轻松集成。
  • 与 Docker Hub 保持同步。

配置 Docker 守护程序

如需将 Docker 守护程序配置为从 Artifact Registry 缓存中拉取映像,请执行以下操作:

CLI

  1. 使用以下方法之一配置守护程序:

    • 如需在启动时自动配置 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"
      
  2. 重启 Docker 守护程序。

    • 在 Linux 上,运行以下任一命令:

      sudo service docker restart
      

      sudo service docker stop && sudo service docker start
      
    • 在 macOS 或 Windows 上,运行以下命令:

      docker-machine restart
      

Docker 界面

  1. 打开 Docker 的偏好设置菜单。
  2. 点击守护进程
  3. 点击高级。在 JSON 字段中,添加一个值为 https://mirror.gcr.ioregistry-mirrors 键:

    {
      "registry-mirrors" : [
        "https://mirror.gcr.io"
      ]
    }
    
  4. 点击应用并重启 (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 会执行以下步骤:

  1. Docker 守护程序会检查 Artifact Registry 缓存,并提取映像(如果存在)。如果守护程序配置包含其他 Docker 镜像,守护程序会检查每个镜像,以便获取映像的缓存副本。
  2. 如果仍未找到该映像,Docker 守护进程将从 Docker Hub 上的规范代码库中提取该映像。

拉取缓存的映像不会计入 Docker Hub 速率限制。但是,无法保证特定映像将会长时间保持缓存状态。请仅通过配置 Docker 守护程序mirror.gcr.io 上获取缓存的映像。

如需针对未在 mirror.gcr.io 中缓存的映像向 Docker Hub 进行身份验证,请使用 Artifact Registry 远程代码库。远程代码库支持向 Docker Hub 进行身份验证。即使您仅使用公共映像,我们也建议您向 Docker Hub 进行身份验证,因为这会增加您的下载速率限制。如需详细了解 Docker Hub 下载速率限制,请参阅 Docker Hub 速率限制

后续步骤