阿里云容器镜像服务: 构建失败:docker 429many requests

问题描述

在使用阿里云容器镜像服务时,遇到了镜像仓库构建失败的问题。具体错误信息为:docker 429 Too Many Requests,错误提示为"ERROR: failed to copy: httpReaderSeeker: failed open: unexpected status code https://registry-1.docker.io/v2/library/node/manifests/sha256:49623842709a1b74fa33eeacfc819a3bd48ddecf3e20166bbe56a918bba5e34a: 429 Too Many Requests - Server message: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit#"

遇到这种情况, 首先可以去容器镜像制品中心中找到符合自己需求的镜像,如果没找到,就需要手动解决。

手动解决方案:

  1. 下载Node镜像包到本地:

    • 执行以下命令下载Node镜像包:
      docker pull registry.cn-hangzhou.aliyuncs.com/library/node
      
      docker pull registry.cn-hangzhou.aliyuncs.com/library/node
      
  2. 将镜像包提交到阿里云的公共镜像仓库:

    • 重新打标签,并将镜像提交到阿里云的公共镜像仓库,使用以下命令:
      docker tag registry.cn-hangzhou.aliyuncs.com/library/node <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      docker push <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      
      docker tag registry.cn-hangzhou.aliyuncs.com/library/node <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      docker push <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      
    • 替换<your-aliyun-registry-url>为你的阿里云镜像仓库地址,<your-repository>为你的镜像仓库名称,<new-image-name>为新镜像的名称。
  3. 在Dockerfile中使用阿里云公共镜像仓库中的Node镜像地址:

    • 在Dockerfile中,使用以下方式指定镜像地址:
      FROM <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      ...
      
      FROM <your-aliyun-registry-url>/<your-repository>/<new-image-name>
      ...
      

通过以上步骤,你可以成功避免Docker Hub的请求限制,并使用阿里云的公共镜像仓库构建你的镜像。

操作示例

创建镜像仓库:

假设你需要使用centos:centos7.8.1080镜像,首先你可以在阿里云容器镜像服务中寻找是否有对应版本的镜像。如果在容器镜像服务中找不到需要的镜像,那么你需要自己上传镜像。下面是具体步骤:

  1. 创建镜像仓库:
    • 登录阿里云容器镜像服务,在控制台中创建一个新的镜像仓库。
    • 按照你提供的示例,创建一个名为centos的镜像仓库。

image.png

image.png

  1. 从Docker Hub上拉取CentOS镜像到本地:

    • 打开终端或命令提示符,执行以下命令拉取centos:centos7.8.1080镜像到本地:
      docker pull centos:centos7.8.1080
      
      docker pull centos:centos7.8.1080
      
  2. 将本地镜像上传到阿里云镜像仓库:

    • 首先,登录到阿里云容器镜像服务。在终端中执行以下命令:
      docker login --username=<your-aliyun-username> --password=<your-aliyun-password> registry.cn-hangzhou.aliyuncs.com
      
      docker login --username=<your-aliyun-username> --password=<your-aliyun-password> registry.cn-hangzhou.aliyuncs.com
      
      请将<your-aliyun-username><your-aliyun-password>替换为你的阿里云账号用户名和密码。
    • 然后,执行以下命令将本地镜像重新打标签,并上传到阿里云镜像仓库:
      docker tag centos:centos7.8.1080 registry.cn-hangzhou.aliyuncs.com/<you-workspace>/centos7.8.1080
      docker push registry.cn-hangzhou.aliyuncs.com/<you-workspace>/centos7.8.1080
      
      docker tag centos:centos7.8.1080 registry.cn-hangzhou.aliyuncs.com/<you-workspace>/centos7.8.1080
      docker push registry.cn-hangzhou.aliyuncs.com/<you-workspace>/centos7.8.1080
      

image.png

如果有任何问题,可以邮件讨论: vincent.cy@foxmail.com