【问题标题】:C# How to Access local network (192.168.x.x) within Docker containersC# 如何在 Docker 容器中访问本地网络 (192.168.x.x)
【发布时间】: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


【解决方案1】:

我设法以某种方式完成了这项工作,没有包括任何运行命令,我相信这是由于我的防火墙阻止访问而失败的,这很奇怪,因为我确实允许访问它,但是在早些时候重新启动我的计算机后,它工作了:) 所以是的,如果有人偶然发现这一点,请记住确保您的防火墙没有阻止对 docker 的访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-18
    • 2017-01-30
    • 1970-01-01
    • 2017-11-08
    • 2022-10-08
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多