我正在尝试通过 socks5 代理提取图像。我已在端口上启动了 socks5 代理,8888
如下所示:
ssh -NC -D 8888 parham@***.***.**
但是,当我docker-compose
这样运行时,很明显它没有使用环境变量:
$ ALL_PROXY=socks5://127.0.0.1:8888 docker-compose up
我如何让 Docker 通过这个代理拉取镜像?
答案1
答案2
方法 1
错误:
docker-compose up
Pulling web (jitsi/web:stable-6433)...
ERROR: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
然后设置HTTP_PROXY
如下HTTPS_PROXY
:
export HTTP_PROXY=socks5://localhost:9040/
export HTTPS_PROXY=socks5://localhost:9040/
结果:
docker-compose up
Pulling web (jitsi/web:stable-6433)...
stable-6433: Pulling from jitsi/web
b380bbd43752: Downloading [===================> ] 10.36MB/27.14MB
0312863d422f: Download complete
503063a74a58: Downloading [============================> ] 7.998MB/14.15MB
392a862abfe3: Download complete
41a073b705ed: Download complete
a8f4844f6941: Download complete
f500f1f2f4ae: Downloading [============> ] 11.69MB/47.56MB
HTTP_PROXY
设置前后的照片:
方法 2
如果方法 1 不起作用(简单方法),你可以使用这个:
第一的
查找 systemd 配置的位置:
systemctl status docker | grep docker.service\;
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
对于我的 Debian 9 来说这里是/lib/systemd/system/docker.service
并且它的目录是/lib/systemd/system/
So cd
into /lib/systemd/system/
。
第二
mkdir
或docker.service.d
:
mkdir docker.service.d && cd !$
第三
在docker.service.d
目录中创建一个.conf
文件,如下:http-代理配置文件
向前
添加这些http-代理配置文件文件:
[Service]
Environment="HTTP_PROXY=socks5://localhost:9040"
Environment="HTTPS_PROXY=socks5://localhost:9040"
注意这localhost:9040
是我的,如果你有不同的 IP 或端口,请更新它
第五
因为我们更新配置运行:
systemctl daemon-reload
然后重启docker服务
systemctl restart docker
现在它已启动并运行:
答案3
@nikhilweee 的上述回答缺少一个关键点。
用于镜像拉取的代理取自 的环境dockerd
。目前无法在不重启 的情况下更改它dockerd
。
我已经提交moby 问题 #37335关于它,因为我想对单个拉取命令使用特定的代理,但一般情况下不是。
答案4
在Docker 17.07及更高版本中,您还可以使用json
文件进行代理配置:
$ vim ~/.docker/config.json
{
"proxies":
{
"default":
{
"httpProxy": "http://127.0.0.1:8118",
"httpsProxy": "http://127.0.0.1:8118"
}
}
}
$ docker pull ubuntu:18.04
$ docker-compose build
更多的官方文档中的信息。
除了使用之外Socks
,您还可以 使用以下方式Socks
转发:HTTP
privoxy
$ sudo apt install -y privoxy
$ sudo vim /etc/privoxy/config
forward-socks5 / 127.0.0.1:9090 .
forward-socks4a / 127.0.0.1:9090 .
forward-socks5t / 127.0.0.1:9090 .
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .
forward localhost/ .
$ sudo service privoxy restart
更多的官方文档中的信息。