【问题标题】:Exposing SCTP port from docker container to host将 docker 容器中的 SCTP 端口暴露给主机
【发布时间】:2019-01-20 14:39:49
【问题描述】:

我的 docker 容器(sctp 服务器)在 sctp 上运行,端口号为 36412。但是,我在主机上的 sctp 客户端无法与容器通信。如何将此端口从容器公开到主机?它与 TCP/UDP 不一样吗? 当我运行docker run -p 36412:36412 myimage 时,出现以下错误。

Invalid proto: sctp

【问题讨论】:

    标签: docker containers sctp


    【解决方案1】:

    reading source code开始,docker run -p选项的一般形式是

    docker run -p ipAddr:hostPort:containerPort/proto
    

    至关重要的是,is allowed to be 的“协议”部分是 tcpudpsctp 中的任何一个;它是小写的,如果没有指定,默认为tcp

    看起来对于您的应用程序,您应该能够

    docker run -p 36412:36412/sctp ...
    

    【讨论】:

    • 感谢大卫的答案。我理解你提到的语法。我已经试过了。显然,docker 不支持 sctp 协议。我收到“无效的原型:sctp”。不确定是否有替代方案。
    【解决方案2】:

    在运行 to 时使用 -p 标志将主机上的开放端口映射到容器端口。下面的示例将主机上的端口 36412 映射到容器中的 36412。

    docker run -p 36412:36412 mysctpimage

    查看容器上运行的端口以及它们映射到的位置:

    docker port <containerId>

    这将告诉您容器映射到主机的端口和协议。例如,运行一个简单的 WebApi 项目可能会产生: 80/tcp -> 0.0.0.0:32768

    Docker Port Documentation

    How to publish or expose a port when running a container

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 2016-06-26
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多