如何使用 socks5 代理制作 docker-compose 拉取图像?

Par*_*dar 7 proxy socks docker

我正在尝试通过 socks5 代理拉取图像。我已经在端口上启动了socks5代理,8888如下所示:

ssh -NC -D 8888 parham@***.***.**
Run Code Online (Sandbox Code Playgroud)

但是,当我这样运行时docker-compose,很明显它没有使用环境变量:

$ ALL_PROXY=socks5://127.0.0.1:8888 docker-compose up
Run Code Online (Sandbox Code Playgroud)

如何让 Docker 通过这个代理拉取镜像?

小智 18

看起来这个功能最近被添加到了docker,特别是在版本中1.11.0ALL_PROXY根据此评论,虽然没有足够的文档说明其用法,但设置环境变量应该有效。

$ export ALL_PROXY=socks5://localhost:port 
$ docker pull image
Run Code Online (Sandbox Code Playgroud)

我现在不确定docker-compose。如果您的主要目标是使用 socks5 加快下载过程,那么您可以通过docker pull在最终运行docker-compose up.


Sha*_*iri 6

方法一

错误:

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
Run Code Online (Sandbox Code Playgroud)

然后设置HTTP_PROXYHTTPS_PROXY这样:

export HTTP_PROXY=socks5://localhost:9040/
export HTTPS_PROXY=socks5://localhost:9040/
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

HTTP_PROXY设置之前和之后的照片:

在此输入图像描述

方法2

如果方法 1 不起作用(简单的一种),您可以使用以下方法

第一的

查找配置的 systemd 位置:

systemctl status docker | grep docker.service\;
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Run Code Online (Sandbox Code Playgroud)

对于我的 Debian 9 来说,/lib/systemd/system/docker.service它的目录是/lib/systemd/system/
So cdinto /lib/systemd/system/

第二

mkdir对于docker.service.d或:

mkdir docker.service.d && cd !$
Run Code Online (Sandbox Code Playgroud)

第三

docker.service.d目录中创建一个.conf文件,例如:http-proxy.conf

向前

在http-proxy.conf文件中添加这些:

[Service]
Environment="HTTP_PROXY=socks5://localhost:9040"
Environment="HTTPS_PROXY=socks5://localhost:9040"
Run Code Online (Sandbox Code Playgroud)

注意这localhost:9040是我的,如果您有不同的 IP 或端口,请更新它

第五

因为我们更新了配置运行:

systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

然后重启docker服务

systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

现在它已启动并运行:

在此输入图像描述