【发布时间】:2020-01-07 16:13:58
【问题描述】:
这是我在这里的第一篇文章,为了解决这个问题,我已经浏览了整个互联网,但不知道如何做到这一点,因为我是 docker 新手,并且不擅长网络(好心地说)。
我需要一种方法来访问我的主机内部网络 IP,该 IP 已转发到连接到代理服务器的端口。所以本质上是 192.168.x.xx:5000 => someproxyserver.com 现在,在我的本地机器甚至 C# 中设置 SOCKS5 时,它能够连接并且可以正常工作。 但 docker 的情况并非如此,我还是 docker 的新手,我尝试了很多东西,但我似乎无法让我的 docker 容器连接到 socks5 服务器。
我什至尝试使用 --network=host 运行 docker 容器,但出现错误(没有到主机的路由)
理想情况下,我不想使用 --network host,因为我有许多其他容器连接到外部网络。
var settings = new ProxySettings() {
Host = localIp,
Port = port
};
using (var proxyClientHandler = new ProxyClientHandler<Socks5>(settings)) {
using (var httpClient = new HttpClient(proxyClientHandler)) {
var response = await httpClient.GetStringAsync("https://api.ipify.org?format=json");
}
}
这是我用来连接到 SOCKS5 服务器的 C# 代码。
当使用--network=host时
没有--network=host
【问题讨论】:
-
通常 docker 创建一个桥接网络,如果你不指定 --network 标志,它允许访问主机的本地网络到容器。你能发布任何例外吗?
-
@vasiloreshenski 嘿,感谢您回复我,我已经更新了帖子并添加了收到的例外情况
-
您是否尝试过在容器外的简单控制台应用程序中运行您的代码?
-
另外,请发布您的
docker run触发异常的命令 -
没有 docker 容器它工作正常,对于 docker run 命令,我只是在 csproj 文件中的 Visual Studio 中使用 docker run --network=host
标签: c# .net docker networking proxy