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