0x1 源/加速

  • 第三方源只是对热门images有加速效果
  • 第三方源对冷门images的加速效果十分不理想
  • 除非无法连接官方源,否则还是不建议使用第三方源

0x2 源流程

综述:

  1. docker源分为两部分:头文件(manifest)以及images实体(layer)
  2. 头文件的服务器是registry-1.docker.io,这在社区版中是写死的
  3. images实体的服务器是production.cloudflare.docker.com
  4. images实体走的是cloudflare不建议开代理

    • cloudflare分配给docker的地址很特殊,类似:104.18.125.25/104.18.121.25/...
    • 这是cf的高速节点,不要对他使用代理
    • 裸奔可以跑到200M+

源的工作流程:

  1. 客户端首先向registry-1.docker.io请求头文件
  2. 然后在请求镜像服务器
  3. 镜像服务器完成完整的缓存后再传递给客户端

0x3 混合加速[推荐]

  1. 首先固定docker会使用的三个主要服务器(可以根据情况自己筛选)

    cat >>/etc/hosts <<EOF
    54.197.112.205 registry-1.docker.io
    174.129.220.74 auth.docker.io
    162.159.210.103 production.cloudflare.docker.com
    EOF
  2. 接着对registry-1.docker.io/auth.docker.io开代理并且避开对production.cloudflare.docker.com代理

0x4 pull限制

关于源pull的限制:

  1. 无论本地设置的什么源,每次pull前docker客户端都会向registry-1.docker.io通报计数
  2. 免费用户的限制是 100次/6小时
  3. 这是硬编码写死的
  4. 官方说明
  5. 参考链接
  6. 第三方镜像服务也会收到这个限制

解决方案:

  1. 直接登录docker login
  2. 自建hub加速器
  3. 切换本地ip地址
  4. 阿里云官方通告

0x5 常用源

  • 源搜集
  • 源配置在/etc/docker/daemon.json
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
    "max-concurrent-downloads": 10,
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://dockerhub.azk8s.cn"
    ]
}
EOF
systemctl daemon-reload
systemctl restart docker
  • max-concurrent-downloads:pull的并发下载线程数.服务器一般会设置并发连接数,5-10比较好
  • registry-mirrors:指定源地址,可以有多个
  • 中科大的源已经放弃维护了,不建议使用官方声明
  • 即使设置了第三方源,有些包仍然会从官方源中下载,第三方包只是辅助加速
Last modification:April 22, 2022
如果觉得我的文章对你有用,请随意赞赏