我正在尝试让WCF应用程序在docker windows容器中运行。
我玩过docker windows容器的不同类型的网络。似乎有两个主要选项NAT和Transparent。
NAT是默认设置,并且很容易支持-p 8080:80
类型的语法来映射端口。但是,NAT阻止了我访问计算机外部的任何内容。 (这意味着我无法连接到其他网络资源。)
透明对于访问我的网络资源非常有用。但是,当我尝试使用-p 8080:80
运行它时,出现以下错误:
failed to create endpoint distracted_gates on network basic: hnsCall failed in Win32:
Port mapping is not supported on the given network. (0x803b0016).
在透明网络上似乎“不支持端口映射”。
所以,这引出了我的问题:
我如何指定使用透明网络连接到Windows服务的端口?(或者还有我不了解的更好的方法。)
注意:如果相关,这是我的docker run命令(给出以上错误消息):
docker run --network myTransparentNetwork --security-opt "credentialspec=file://mygMSA.json" -d -p 8080:80 myContainerImage:myTag
答案 0 :(得分:0)
无需在网桥(linux)或透明(windows)网络中映射端口。在这种情况下,要求是在Dockerfile中使用EXPOSE
关键字。
在大多数情况下(使用NAT的情况下),EXPOSE
关键字对于文档目的来说更加有用,一旦您仍然需要映射-p hostPort:containerPort
。
请参阅下面的Dockerfile中的EXPOSE
关键字示例:
#document ports that are mandatory
EXPOSE 8080 8090 9000