前言

因不可抗力,国内访问 docker 及其艰难,只能自立更生
docker 一键安装脚本 bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

方案一:直接使用代理

如何优雅的给 Docker 配置网络代理

方案二:使用 Cloudflare Worker 反代

cloudflare-docker-proxy
基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建镜像加速服务

方案三:镜像转存方案

tech-shrimp/docker_image_pusher
togettoyou/hub-mirror

方案四:自建 Docker 镜像

dqzboy/Docker-Proxy
bboysoulcn/registry-mirror

Nginx 反代实现对应访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
location / {
proxy_pass https://registry-1.docker.io;
proxy_set_header Host registry-1.docker.io;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_set_header Authorization $http_authorization;
proxy_pass_header Authorization;
proxy_intercept_errors on;
recursive_error_pages on;
error_page 301 302 307 = @handle_redirect;
}
location @handle_redirect {
resolver 1.1.1.1;
set $saved_redirect_location '$upstream_http_location';
proxy_pass $saved_redirect_location;
}

主观上的对比

方案 操作难度 下载速度 备注
直接代理 简单 较快 缺点是每个机器要单独配置,另外部分机器无法配置代理
Cf Worker 简单 较慢 部分地区无法正常连接CF, 白嫖要什么自行车
转存镜像 一般 一般 自建方案略复杂,每次需要转存一次也略麻烦
自建镜像 一般 未知 速度取决于机器带宽/线路,机器也就意味着要钱