Docker 里的程序需要访问宿主机的 socks5,如何配置?

328 天前
 estk

宿主机的 socks5 假设是 40000 端口

目前解法是 docker run --network host ,但是这样变成所有端口映射了,不是想要的解法

如果 docker run -p 40000:40000 ,又会提示宿主机该端口占用

1531 次点击
所在节点    Docker
17 条回复
Andim
328 天前
FreeEx
328 天前
docker run --add-host=host.docker.internal:宿主机 IP
你在容器里面访问 host.docker.internal 即可。
FreeEx
328 天前
--add-host=host.docker.internal:host-gateway
搞错了,是这个命令
ETiV
328 天前
docker 容器内的 Gateway IP 就是宿主,你可以手动创建 network 把这 IP 固定一下

(看到是 40000 )如果这 socks5 服务监听在 127.0.0.1 上不好使…
estk
328 天前
@ETiV #4
对,就是要 docker 内部访问 127.0.0.1:40000 的时候,连接宿主机对应的 ip:port
ETiV
328 天前
那你可以在 host 上开一个 nginx 做 steam 的反向代理,把 127.1 的 40000 暴露给 docker network 的 gateway IP 上…
villivateur
328 天前
docker 内为啥一定要访问 127.0.0.1 呢,不能指定 ip 地址吗?
Andim
328 天前
@villivateur 他可能是要用 Warp
zhanghua0
328 天前
宿主机的服务需要监听来自局域网的连接并且防火墙放行端口,容器需要把地址改成宿主在容器网络的地址
不想这么麻烦就 --network=host 让容器使用宿主机的网络
BeautifulSoap
328 天前
内啥,3L 都把标准答案写出了
estk
328 天前
@FreeEx #3
我试试
@BeautifulSoap
estk
328 天前
@FreeEx #3
设置了 --add-host=host.docker.internal:host-gateway -p 50000:40000
然后 docker 里访问 host.docker.internal:50000 ,依然不行
不知道是不是 socks5 无法通过 host-gateway:40000 访问
这个我自己再研究看看
chenjia404
326 天前
一个简单的方法,你宿主机的 socks5 服务监听局域网 ip ,例如 192.168.1.23:40000 ,然后在 docker 容器内访问 192.168.1.23:40000 。
BeautifulSoap
326 天前
@estk 那个,你首先得确保,你宿主跑的服务是监听了的 0.0.0.0:5000 地址而不是 127.0.0.1:5000
BeautifulSoap
326 天前
打错端口了是 4000 端口,不过意思到了就行
estk
326 天前
@BeautifulSoap #15
是 40000 端口
不过你提醒了我,确实需要这样设置一下,我去试试
estk
326 天前
@FreeEx #3
host.docker.internal 据说 linux 用不了,Window 和 Mac 可以

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

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

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

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

© 2021 V2EX