本地Windows Server 2016 VM中的Spawn Docker EE Swarm服务

我想演示在本地Windows Server 2016虚拟机中运行带有简单Asp.Net Core网站的Docker群集。 该网站运行在端口5000.但是,当我初始化群体并添加服务,我无法访问指定的端口上的网站地址。 导航到http:// localhost:5000 , http: //127.0.0.1 :5000 ,或任何服务容器IP不会显示该网站。 为什么这是一个群体的情况?

Windows防火墙已禁用。

Dockerfile.build

FROM microsoft/aspnetcore:2.0.0-nanoserver WORKDIR / COPY /bin/Release/netcoreapp2.0/win7-x64/publish ./ EXPOSE 5000 ENTRYPOINT ["AspNetCoreHelloWorld.exe", "--urls", "http://*:5000"] 

初始化群

 docker swarm init --advertise-addr 127.0.0.1:2377 --listen-addr 0.0.0.0:2377 

创build一个服务

 docker service create --name helloworld --publish 5000:5000 --replicas 3 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 

我可以确认该服务在我的节点中复制了三个实例。 为什么端口列是空的,即使我映射端口5000?

 docker service ps helloworld ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS y7i6pn9dcgtk helloworld.1 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 WIN-QL7AIOPATIH Running Starting 16 seconds ago vpc3naln3q2l helloworld.2 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 WIN-QL7AIOPATIH Running Starting 16 seconds ago w88cwnj7omo7 helloworld.3 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 WIN-QL7AIOPATIH Running Starting 16 seconds ago docker service ls ID NAME MODE REPLICAS IMAGE PORTS 66h9usj0xxiq helloworld replicated 3/3 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 *:5000->5000/tcp 

“目前,DNS Round-Robin是Windows上唯一支持的负载均衡策略.Windows Docker主机的路由networking目前还不支持,但即将推出。今天寻求替代负载均衡策略的用户可以设置一个外部负载均衡器(例如, NGINX),并使用Swarm的发布 – 端口模式来展示负载平衡的容器主机端口。“

https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/swarm-mode