2017-06-04 10 views
0

にアクセスポートを公開していない、私は3つの仮想マシン用のHyper-Vを作成し、各OSは、Windows Server 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 

私はuseコマンドを作成します。ドッカ

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

"host"モードでポートを公開する必要があると考えています(https:// docs。Microsoft.com/en-us/virtualization/windowscontainers/manage-containers/swarm-mode)。また、実行中のコンテナとホスト間の1対1のポートマッピングであるため、同じポート上で複数のコンテナを実行することはできません。ルーティングメッシュはまだWindowsでは動作していません。 –

+0

あなたの返事をありがとう、私はコンテナを作成すると、 " - パブリッシュモード=ホスト、ターゲット= 5005、公開= 5010"を使用して、それは動作しています! – zhya

+0

これを回答として受け入れてください –

答えて

1

を(docs.microsoft.com/en-us /仮想化/ windowscontainers/...)。また、実行中のコンテナとホスト間の1対1のポートマッピングであるため、同じポート上で複数のコンテナを実行することはできません。ルーティングメッシュはまだWindowsでは動作していません。

1

Linux用の窓コンテナとドッカー用ドッカー間のネットワークにおけるいくつかの違いがありますがある正しい結果を得ることができます。 WindowsコンテナはHyperVネットワークテクノロジを使用して、ドッキングステーションが使用する仮想ネットワーキング機能を提供します。そこから、Dockerの標準的なドキュメントで期待されている、または多分見つけられるような、いくつかの制限があります。

  • まず、あなたはあなたがリモートマシンから常に それを呼び出す必要がルックバックアドレス(127.0.0.1)、またはホストアドレス(192.168.1.xxx)を使用して して、コンテナ内で実行されているウェブ側にアクセスすることはできません。
  • 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

関連する問題