【问题标题】:System.Net.Sockets.SocketException: 'An attempt was made to access a socket in a way forbidden by its access permissions.'System.Net.Sockets.SocketException:“试图以访问权限禁止的方式访问套接字。”
【发布时间】:2021-04-07 13:02:07
【问题描述】:

我在本地应用程序中有一个 tcp 侦听器,还有一个 docker 容器,里面有另一个应用程序。在 docker 容器中,我公开端口 5555:5555 以在应用程序 inse docker 与正在侦听 127.0.0.1:5555 的 tcp 侦听器之间建立套接字。

问题是当我在 docker 容器 (-p 5555:5555) 中公开端口时,windows 会排除此端口。

enter image description here

这就是为什么我无法运行我的 tcp 侦听器,为什么我会收到 System.Net.Sockets.SocketException:'试图以访问权限禁止的方式访问套接字。'

【问题讨论】:

    标签: docker tcp


    【解决方案1】:

    我没有找到解决方案,所以最后我为我的 tcp 服务器创建了一个新容器,并在容器之间建立了一个网络。

    docker network create --driver bridge nat
    

    在 docker-composes 中定义网络并给我的 tcpServer 一个静态 ip

    services:
      tcpServer:
        networks:
          test:
            ipv4_address: 172.18.192.157
        ....
    
    networks:
      test:
        external:
          name: nat
    

    我首先尝试设置主机网络,但我意识到此功能在 windows 中不可用。

    • 主机网络驱动程序仅适用于 Linux 主机,不支持 Docker Desktop for Mac、Docker Desktop for Windows 或 Docker EE for Windows Server

    Docker network documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      相关资源
      最近更新 更多