Docker透明网络和端口映射

时间:2019-08-16 18:50:08

标签: windows docker docker-for-windows

我正在尝试让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

1 个答案:

答案 0 :(得分:0)

无需在网桥(linux)或透明(windows)网络中映射端口。在这种情况下,要求是在Dockerfile中使用EXPOSE关键字。

在大多数情况下(使用NAT的情况下),EXPOSE关键字对于文档目的来说更加有用,一旦您仍然需要映射-p hostPort:containerPort

请参阅下面的Dockerfile中的EXPOSE关键字示例:

#document ports that are mandatory
EXPOSE 8080 8090 9000