Docker中的Windows服务器核心,防火墙



目前我正在进行一个项目,在该项目中,我必须对本应在Windows上运行的应用程序进行码头化。它是一个可以通过命令行安装和配置的应用程序。这个问题最终适用于任何申请。

我选择的平台显然是Windows。因此,我选择了一个基本映像mcr.microsoft.com/windows/servercore:1803作为开始。

安装后,我的应用程序将需要一个规则添加到防火墙。因此,我决定测试我是否能够在容器内操作防火墙。这是一次非常有问题的经历。

到目前为止我所做的。

FROM mcr.microsoft.com/windows/servercore:1803
# Add user 
RUN net user /add MyUser
RUN net user MyUser ABCdef123!
RUN net localgroup "Administrators" MyUser /add

之后,我测试了是否可以通过调用Get-NetFirewallRule来查看FW规则。这导致了一个错误:

Get-NetFirewallRule : There are no more endpoints available from the endpoint mapper.
At line:1 char:1
+ Get-NetFirewallRule
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (MSFT_NetFirewallRule:root/standardcimv2/MSFT_NetFirewallRule) [Get-NetFirewallRule], CimException
+ FullyQualifiedErrorId : Windows System Error 1753,Get-NetFirewallRule

我通过调用Get-Service检查了当前运行的服务,得到了包含此行的服务列表:Stopped mpssvc Windows Defender Firewall。看起来FW甚至还没有启动。我决定更深入地挖掘,并检查注册表中的一些线索。调用此cmd REG QUERY HKLMSYSTEMCurrentControlSetservicesMpsSvc /v Start会给我一个值4,该值为Disabled。所以我试着启用它,将其设置为2,但在之后启动服务时运气不佳

REG ADD HKLMSYSTEMCurrentControlSetservicesMpsSvc /v Start /t REG_DWORD /d 2 /f
net start MpsSvc

结果:

System error 1058 has occurred.
The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

依赖FW的服务运行良好(BFE、RDC等(它就是不会开始。

聪明人有什么线索吗?提前感谢!

假设您使用的是Windows Server Container,而不是Hyper-V Container,则您有一个共享内核,因此使用主机的防火墙。

来自网络隔离与安全:

根据使用的容器和网络驱动程序,端口ACL由Windows防火墙和VFP的组合强制执行。

Windows Server容器

它们使用Windows主机的防火墙(受网络命名空间启发(以及VFP

默认出站:ALLOW ALL

默认入站:ALLOW ALL(TCP、UDP、ICMP、IGMP(未经请求的网络流量

拒绝所有非来自这些协议的其他网络流量

最新更新