V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ltfree
V2EX  ›  宽带症候群

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

  •  
  •   ltfree · 13 天前 · 1352 次点击

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

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

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

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

    20 条回复    2024-04-29 04:28:59 +08:00
    vituralfuture
        1
    vituralfuture  
       13 天前 via Android
    linux 的代理主要是设置环境变量,此外很多软件并不遵守环境变量,可以考虑用 tun 模式
    assassins1234567
        2
    assassins1234567  
       13 天前 via iPhone   ❤️ 1
    设置下 export https_proxy=xxxxxxx 和 export http_proxy=xxxxxxxx 试试?
    vituralfuture
        3
    vituralfuture  
       13 天前 via Android   ❤️ 1
    @vituralfuture 另外桌面软件的启动方式跟 cli 有所不同,导致他们获取到的环境变量也可能不一样,可以在终端 env 看看环境变量,然后 curl 一下 google 测试一下

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

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

    这个怎么还能有疑问呢?
    YaD2x
        15
    YaD2x  
       12 天前   ❤️ 1
    搜索 docker 代理
    ronyin
        16
    ronyin  
       12 天前   ❤️ 1
    docker 直接用 host 网络模式,然后试下。。
    wuruxu
        17
    wuruxu  
       12 天前   ❤️ 1
    你这个情况,可以考虑直接把科学上网功能部署到路由器上
    ltfree
        18
    ltfree  
    OP
       12 天前
    @warcraft1236 docker 不是很熟悉,才知道有这个概念,已经解决了,谢谢
    hhhhhccccc
        19
    hhhhhccccc  
       12 天前
    @ltfree 用 tun 模式, 其他的什么软件都不用配
    Aurorataro
        20
    Aurorataro  
       11 天前
    容器用 bridge ,主机直接用 tun
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1110 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 424ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.