如何使用 artifactory 镜像 dockerhub

How to mirror dockerhub with artifactory

自从 dockerhub 开始限制非付费帐户的下载,我经常收到此错误

ERROR: Preparation failed: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit (executor_docker.go:188:15s)

https://docs.docker.com/docker-hub/download-rate-limit/

我有一个神器服务器,如何先从神器设置 docker 到 cache/mirror?

首先设置一个指向 docker hub at https://registry-1.docker.io

的 artifactory remote

然后重新配置所有 docker 代理以使用 registry_mirror。有多种方法可以做到这一点,但将 --registry-mirror 添加到 docker 启动选项很可能是最简单的方法。有关详细信息,请参阅 docker 文档

https://docs.docker.com/registry/recipes/mirror/

方法一

在/etc/default/docker

中的OPTIONS变量中添加--registry-mirror
cat /etc/default/docker
OPTIONS=" -H unix:///var/run/docker.sock --ip-forward=true --iptables=true --ip-masq=true --registry-mirror=https://docker.artifactory.example.com -G docker"

方法二

编辑/etc/docker/registry/config.yml

proxy:
  remoteurl: https://registry-1.docker.io
  username: [username]
  password: [password]

方法三

如果使用 puppet,配置如下所示

  class { '::docker':
    use_upstream_package_source => false,
    manage_package              => false,
    registry_mirror             => 'https://docker.artifactory.example.com',
  }

您还可以在与此相关的 official blog JFrog released 中获得一些信息。

查看本页@john-peterson的详细说明。

避免 运行 进入 Dockerhub 速率限制的步骤:

  1. 如果您还没有 Dockerhub 免费帐户,请注册一个。 Dockerhub 允许每 6 小时最多提取 200 次凭证,而匿名提取每 6 小时 100 次。

  2. 使用 Artifactory 作为 Dockerhub 之间的缓存,方法是设置一个到 Dockerhub 的远程仓库和一个本地仓库来推送和拉取不在 dockerhub 上的图像。

  3. 避免将 Dockerhub 用于个人镜像。只在必要时拉取官方镜像。

  4. 设置您的 docker 客户端始终使用虚拟仓库的 docker 仓库路径通过 Artifactory:

    docker.artifactory.example.com/docker-virtual/myimage:1.0.0

  5. 使用带有虚拟仓库的路径以相同的方式拉取官方镜像。

    docker.artifactory.example.com/docker-virtual/ubuntu:最新

  6. 通过使用分析来监控您的 Dockerhub 速率限制 JFrog 已提供与 Splunk, Elastic, and Prometheus 的集成,以监控您滚动的 6 小时 window 的 docker 集线器拉取请求和缓存命中率。