【发布时间】: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
我的 docker 容器(sctp 服务器)在 sctp 上运行,端口号为 36412。但是,我在主机上的 sctp 客户端无法与容器通信。如何将此端口从容器公开到主机?它与 TCP/UDP 不一样吗?
当我运行docker run -p 36412:36412 myimage 时,出现以下错误。
Invalid proto: sctp
【问题讨论】:
标签: docker containers sctp
从reading source code开始,docker run -p选项的一般形式是
docker run -p ipAddr:hostPort:containerPort/proto
至关重要的是,is allowed to be 的“协议”部分是 tcp、udp 或 sctp 中的任何一个;它是小写的,如果没有指定,默认为tcp。
看起来对于您的应用程序,您应该能够
docker run -p 36412:36412/sctp ...
【讨论】:
在运行 to 时使用 -p 标志将主机上的开放端口映射到容器端口。下面的示例将主机上的端口 36412 映射到容器中的 36412。
docker run -p 36412:36412 mysctpimage
查看容器上运行的端口以及它们映射到的位置:
docker port <containerId>
这将告诉您容器映射到主机的端口和协议。例如,运行一个简单的 WebApi 项目可能会产生: 80/tcp -> 0.0.0.0:32768
【讨论】: