2017-06-04 22 views
0

我用windows的容器,并尝试建立泊坞窗群,我创建三个虚拟机使用Hyper-V,并且每个操作系统是Windows服务器2016.There机器的IP是:的Windows集装箱群发布端口,而不是访问

windocker211 192.168.1.211 
windocker212 192.168.1.212 
windocker219 192.168.1.219 

的搬运工群节点是:

PS C:\ConsoleZ> docker node ls 
ID       HOSTNAME   STATUS    AVAILABILITY  MANAGER STATUS 
4c0g0o0uognheugw4do1a1h7y  windocker212   Ready    Active 
bbxot0c8zijq7xw4lm86svgwp * windocker219   Ready    Active    Leader 
wftwpiqpqpbqfdvgenn787psj  windocker211   Ready    Active 

创建使用命令:

docker service create --name=demo5 -p 5005:5005 --replicas 6 192.168.1.245/cqgis/wintestcore:0.6 

的搬运工图像是asp.net核心应用,该Dockerfile是:

FROM 192.168.1.245/win/aspnetcore-runtime:1.1.2 
COPY . /app 
WORKDIR /app 

ENV ASPNETCORE_URLS http://*:5005 

EXPOSE 5005/tcp 

ENTRYPOINT ["dotnet", "dotnetcore.dll"] 

那么它创造佳绩:

PS C:\ConsoleZ> docker service ls 
ID     NAME    MODE    REPLICAS   IMAGE         PORTS 
omhu7e0vo96s  demo5    replicated   6/6     192.168.1.245/cqgis/wintestcore:0.6 *:5005->5005/tcp 


PS C:\ConsoleZ> docker service ps demo5 
ID     NAME    IMAGE         NODE    DESIRED STATE  CURRENT STATE    ERROR    PORTS 
8pihnak9a2ei  demo5.1    192.168.1.245/cqgis/wintestcore:0.6 windocker212   Running    Running 59 seconds ago 
ut3f3b9giu4w  demo5.2    192.168.1.245/cqgis/wintestcore:0.6 windocker219   Running    Running 47 seconds ago 
iy1xjevt67yl  demo5.3    192.168.1.245/cqgis/wintestcore:0.6 windocker211   Running    Running about a minute ago 
q7f1gnbwslr3  demo5.4    192.168.1.245/cqgis/wintestcore:0.6 windocker212   Running    Running about a minute ago 
8zewaktcu32h  demo5.5    192.168.1.245/cqgis/wintestcore:0.6 windocker219   Running    Running about a minute ago 
xq820kqwf3v9  demo5.6    192.168.1.245/cqgis/wintestcore:0.6 windocker211   Running    Running 55 seconds ago 

但我的问题是我上无法访问每个网站通过

http://192.168.1.219:5005/ 
http://192.168.1.219:5005/ 
http://192.168.1.219:5005/ 

当我使用命令

docker run -it -p 5010:5005 192.168.1.245/cqgis/wintestcore:0.6 

我可以使用http://192.168.1.219:5010/得到正确的结果

我泊坞窗信息是

PS C:\ConsoleZ> docker info 
Containers: 4 
Running: 3 
Paused: 0 
Stopped: 1 
Images: 5 
Server Version: 17.06.0-ce-rc1 
Storage Driver: windowsfilter 
Windows: 
Logging Driver: json-file 
Plugins: 
Volume: local 
Network: l2bridge l2tunnel nat null overlay transparent 
Log: awslogs etwlogs fluentd json-file logentries splunk syslog 
Swarm: active 
NodeID: bbxot0c8zijq7xw4lm86svgwp 
Is Manager: true 
ClusterID: 32vsgwrbn6ihvpevly71gkgxk 
Managers: 1 
Nodes: 3 
Orchestration: 
    Task History Retention Limit: 5 
Raft: 
    Snapshot Interval: 10000 
    Number of Old Snapshots to Retain: 0 
    Heartbeat Tick: 1 
    Election Tick: 3 
Dispatcher: 
    Heartbeat Period: 5 seconds 
CA Configuration: 
    Expiry Duration: 3 months 
    Force Rotate: 0 
Root Rotation In Progress: false 
Node Address: 192.168.1.219 
Manager Addresses: 
    192.168.1.219:2377 
Default Isolation: process 
Kernel Version: 10.0 14393 (14393.1198.amd64fre.rs1_release_sec.170427-1353) 
Operating System: Windows Server 2016 Datacenter 
OSType: windows 
Architecture: x86_64 
CPUs: 8 
Total Memory: 2.89GiB 
Name: windock219 
ID: 7AOY:OT6V:BTJV:NCHA:3OF5:5WR5:K2YR:CFG3:VXLD:QTMD:GA3D:ZFJ2 
Docker Root Dir: C:\ProgramData\docker 
Debug Mode (client): false 
Debug Mode (server): true 
File Descriptors: -1 
Goroutines: 297 
System Time: 2017-06-04T19:58:20.7582294+08:00 
EventsListeners: 2 
Registry: https://index.docker.io/v1/ 
Experimental: true 
Insecure Registries: 
192.168.1.245 
127.0.0.0/8 
Live Restore Enabled: false 
+0

我相信你需要在“主机”模式下发布端口(https:// docs。microsoft.com/en-us/virtualization/windowscontainers/manage-containers/swarm-mode)。它也将是运行容器和主机之间的一对一端口映射,因此您将无法在同一端口上运行多个容器。路由网格在Windows上还没有工作。 –

+0

感谢您的回复,我在创建容器时使用“--publish mode = host,target = 5005,published = 5010”,它正在运行! – zhya

+0

接受这个作为回答请在下面 –

回答

1

我beleive您需要发布端口“主”模式(docs.microsoft.com/en-us /虚拟化/ windowscontainers/...)。它也将是运行容器和主机之间的一对一端口映射,因此您将无法在同一端口上运行多个容器。路由网格在Windows上还没有工作。

1

有码头工人之间的网络中的Windows集装箱和码头工人对Linux的一些差异。 Windows Containers使用HyperV网络技术来提供Docker使用的虚拟网络功能。从这里有一些限制是不符合你的期望或者在标准Docker文档中找到的。

  • 首先,你不能使用的回溯地址(127.0.0.1)或主机地址(192.168.1.xxx)由 访问您的容器内运行的web端,你必须从一台远程机器总是把它 。
  • 我看到你在Dockerfile中使用了expose命令。它不是 所以自我解释,但揭露是暴露在任何其他 网络端口,然后是主机或入口网络。如果您在非群集配置中执行此操作,但它在群集中不起作用,则这不是问题。 我建议删除Expose命令。
  • Windows网络存在一些未解决的问题。有时在容器重新启动后端口保持使用状态。 例如,重新启动主机系统后。 [https://github.com/moby/moby/issues/21558][1]

有了这个凭证,您可以删除所有的虚拟网络设置:

Stop-Service docker 
Get-ContainerNetwork | Remove-ContainerNetwork 
Get-NetNat | Remove-NetNat 
Get-VMSwitch | Remove-VMSwitch 
Start-Service docker 
+0

谢谢你的回复,当我创建容器时,我使用“--publish mode = host,target = 5005,published = 5010”,它工作正常! – zhya

相关问题