关于乌班图代理困惑很久的一个问题

207 天前
 ltfree

一台乌班图 22 版本的图形化电脑,准备用来跑程序(程序需要梯子)

在桌面系统安装了 clash 并且已经连上了外网(浏览器可浏览 google 油管等 且很丝滑)

然后我通过命令行搭建了 docker 准备跑程序(程序里需要连接外网的地方,均指定了 7890 端口,且在 windows 电脑测试正常),但连接外网一直失败

难道 shell 端和桌面端的代理不互通么? 哪位给小弟指点下,找了好多文档都不行

1849 次点击
所在节点    宽带症候群
20 条回复
vituralfuture
207 天前
linux 的代理主要是设置环境变量,此外很多软件并不遵守环境变量,可以考虑用 tun 模式
assassins1234567
207 天前
设置下 export https_proxy=xxxxxxx 和 export http_proxy=xxxxxxxx 试试?
vituralfuture
207 天前
@vituralfuture 另外桌面软件的启动方式跟 cli 有所不同,导致他们获取到的环境变量也可能不一样,可以在终端 env 看看环境变量,然后 curl 一下 google 测试一下

设置代理的环境变量是
vituralfuture
207 天前
@vituralfuture http_proxy https_proxys
ltfree
207 天前
@vituralfuture 谢谢哥 之前已经设置了 无效
ltfree
207 天前
@vituralfuture 问题出在 docker 上面,不用 docker 跑的话,一切正常,用 docker 就连不上外网,不过原因没有找到,按道理来讲,容器内是没有什么限制的
vituralfuture
207 天前
@ltfree 试试容器传入代理的环境变量,代理服务器地址为 docker 网络中宿主机地址,端口为 clash 的代理端口,另外打开 clash 允许局域网连接
ltfree
207 天前
@vituralfuture 好的 谢谢哥 我研究下这个 晚点回复
cdlnls
207 天前
在容器里面运行的程序,肯定是不会继承终端的环境变量信息的(HTTP_PROXY),要想容器里面也能用代理,那么应该在容器内也设置一个环境变量 HTTP_PROXY 。设置方法有两种,一种是在 dockerfile 里面写,一种是运行的时候使用-e 指定环境变量。
JensenQian
207 天前
把你代理整路由器上就完事了
mgrddsj
207 天前
除了楼上说的容器内要设置代理的环境变量以外,还要注意 Docker 网络的配置。如果 Docker 网络不是用 "host" 模式的话,就不能直接用 127.0.0.1 ,而是需要额外的网络配置。如果用 "host" 网络模式的话,那应该就可以访问主机上跑的服务了。
warcraft1236
207 天前
cat ~/.docker/config.json

{
"proxies": {
"default": {
"httpProxy": "http://172.17.0.1:1080",
"httpsProxy": "http://172.17.0.1:1080"
}
}
}
warcraft1236
207 天前
warcraft1236
207 天前
甚至我都想毫不留情的指出,使用最基本的关键字 docker proxy 在 Google 上搜索,第一条结果就是我贴出来的官方文档

这个怎么还能有疑问呢?
YaD2x
207 天前
搜索 docker 代理
ronyin
207 天前
docker 直接用 host 网络模式,然后试下。。
wuruxu
207 天前
你这个情况,可以考虑直接把科学上网功能部署到路由器上
ltfree
207 天前
@warcraft1236 docker 不是很熟悉,才知道有这个概念,已经解决了,谢谢
hhhhhccccc
207 天前
@ltfree 用 tun 模式, 其他的什么软件都不用配
Aurorataro
206 天前
容器用 bridge ,主机直接用 tun

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036229

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX