0x1 源/加速
- 第三方源只是对热门images有加速效果
- 第三方源对冷门images的加速效果十分不理想
- 除非无法连接官方源,否则还是不建议使用第三方源
0x2 源流程
综述:
- docker源分为两部分:头文件(manifest)以及images实体(layer)
头文件
的服务器是registry-1.docker.io
,这在社区版中是写死的images实体
的服务器是production.cloudflare.docker.com
images实体
走的是cloudflare
不建议开代理cloudflare
分配给docker的地址很特殊,类似:104.18.125.25/104.18.121.25/...
- 这是cf的高速节点,不要对他使用代理
- 裸奔可以跑到200M+
源的工作流程:
- 客户端首先向
registry-1.docker.io
请求头文件 - 然后在请求镜像服务器
- 镜像服务器完成完整的缓存后再传递给客户端
0x3 混合加速[推荐]
首先固定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
- 接着对
registry-1.docker.io/auth.docker.io
开代理并且避开对production.cloudflare.docker.com
代理
0x4 pull限制
关于源pull
的限制:
- 无论本地设置的什么源,每次pull前docker客户端都会向
registry-1.docker.io
通报计数 - 免费用户的限制是 100次/6小时
- 这是硬编码写死的
- 官方说明
- 参考链接
- 第三方镜像服务也会收到这个限制
解决方案:
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
:指定源地址,可以有多个- 中科大的源已经放弃维护了,不建议使用官方声明
- 即使设置了第三方源,有些包仍然会从官方源中下载,第三方包只是辅助加速