Linux服务器怎么让docker走梯子代理节点

目前走部署一个ai比赛平台,通过docker
但是构建镜像经常遇到网络问题
比如:

目前用的v2rayA,说redirect对docker友好
但是还是主机可以走,构建容器的时候似乎走不了

windows的clash好像有tun模式,不清楚linux上有什么推荐的软件吗


分割线,整理目前找到的解决方案

构建走代理

方法1
设置构建参数

docker build -t compute_worker -f Dockerfile.compute_worker \
    --network host \
    --build-arg HTTP_PROXY=http://127.0.0.1:20172 \
    --build-arg HTTPS_PROXY=http://127.0.0.1:20172 .

方法2
设置配置文件
来自@tttt

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
# 加入
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:9999"
Environment="HTTPS_PROXY=http://127.0.0.1:9999"
Environment="NO_PROXY=localhost,127.0.0.1"

运行走代理

我图片中的v2ray开redirect目前可以用

其他方法待研究

12 个赞

我是在dokcer.service里面配置了http代理的地址+端口

[Service]
xxxxxxxxx
Environment="HTTP_PROXY=http://127.0.0.1:12334"
Environment="HTTPS_PROXY=http://127.0.0.1:12334"
2 个赞

直接换成国内的镜像源

1 个赞

使用tpclash, tun模式即可

1 个赞

我也用的这个,但是也发现了,构建容器的时候会连不上

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
# 加入
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:9999"
Environment="HTTPS_PROXY=http://127.0.0.1:9999"
Environment="NO_PROXY=localhost,127.0.0.1"
1 个赞

clase verge支持TUN模式,开TUN走网卡代理

或者强制设置docker周客户端代理,例如clash一般就是127.0.0.1:7890

1 个赞

docker build -t compute_worker -f Dockerfile.compute_worker
–network host
–build-arg HTTP_PROXY=http://127.0.0.1:20172
–build-arg HTTPS_PROXY=http://127.0.0.1:20172 .

我刚刚这样build就可以走代理了

如果是加配置文件的话,是不是不仅构建走代理,而且容器运行起来也可以走代理了

不是,我那个配置文件仅是配置 pull 的时候走代理。

应该只是拉镜像才会走代理


我按官网推荐的透明代理设置的,这样全部都能用

1 个赞

linux下面安装proxychains4,设置好对应的端口号,需要使用代理,直接 proxychains docker build xxxx。不需要就还是原来的命令。

其他命令类似操作。

mark一下!!!

docker容器配置代理 不要使用127.0.0.1这个ip,要使用主机别的网卡上的ip


如上图使用第二个ip,即可

1 个赞

linux 也能开 tun

感谢 :tieba_025:

这个本质是docker build会先启动一个容器,容器内部是有127.0.0.1和主机上的127.0.0.1不是一个所以无法通信,docker run的时候是一个

TUN应该是可以的

用tproxy模式,然后加入生命周期钩子。官方文档有写。redirect模式dns漏了

linux中我是直接跑个sb,开tun,不用配置任何环境变量,什么场景都能走代理,包括容器内的curl都能自动走代理,

1 个赞