最近发现阿里云,腾讯云,京东云 这些大厂的服务器拉取docker镜像很轻松, 然而本地拉取镜像常常超时. 所以想本地拉取镜像走大厂云服务器做代理.
小厂服务器ip随意变, docker网桥失效, 比较麻烦. 小厂服务器最好不要上docker
1 . 首先在阿里云服务器装Squid
在服务器执行:
sudo apt update
sudo apt install -y squid
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
sudo nano /etc/squid/squid.conf
如果这台服务器还没有在使用 Squid,可以把配置文件替换为:
http_port 127.0.0.1:3128
acl tunnel_client src 127.0.0.1/32
acl allowed_ports port 80 443
acl tls_ports port 443
acl CONNECT method CONNECT
http_access deny !allowed_ports
http_access deny CONNECT !tls_ports
http_access allow tunnel_client
http_access deny all
cache deny all
检查并启动:
sudo squid -k parse
sudo systemctl enable squid
sudo systemctl restart squid
代理仅监听服务器的 127.0.0.1,阿里云安全组不用开放 3128 端口 ,只需要你原本能连接的 SSH 端口。Squid 配置说明
2. 本机建立 SSH 隧道
在 Windows PowerShell 执行,把用户名和 IP 换成你的:
ssh -N -L 127.0.0.1:13128:127.0.0.1:3128 -o ExitOnForwardFailure=yes -o ServerAliveInterval=30 用户名@服务器公网IP
需要输入密码
连接成功后没有输出是正常的,保持这个窗口运行。如果 SSH 用的不是 22 端口,加上 -p 你的端口。
3. 设置 Docker Desktop 代理
打开 Docker Desktop 的 Settings → Resources → Proxies,启用手动代理,填写:
| 项目 | 地址 |
|---|---|
| HTTP Proxy | http://127.0.0.1:13128 |
| HTTPS Proxy | http://127.0.0.1:13128 |
HTTPS 那一栏也填写 http://,因为 Squid 通过 CONNECT 转发 HTTPS。
如果界面有单独的 Containers proxy ,把它设为 Same as host proxy ,或者填同样的地址;不要设为 No proxy。保存并应用设置。
4. 验证是否经过服务器
本机执行:
bash
curl --noproxy "" -I -x http://127.0.0.1:13128 --connect-timeout 10 --max-time 20 https://gnhbjsct.mirror.aliyuncs.com/v2/
https://gnhbjsct.mirror.aliyuncs.com/v2/ 是阿里云服务器docker已经配置的镜像源,
本地镜像源需要和阿里云服务器docker镜像源一致, 如:
bash
{
"registry-mirrors": [
"https://gnhbjsct.mirror.aliyuncs.com/",
"https://docker.1ms.run/",
"https://docker.m.daocloud.io/",
"https://dockerpull.org/",
"https://docker.udayun.com/"
]
}