サーバの物理構成としてネットワークは NICを2枚使用して一枚はDocker用のNIC、もう一枚はDockerサーバ用のNICにした。
Dockerには
がある
{ "bridge" : "none" }
PS C:\Windows\system32> Stop-Service docker
PS C:\Windows\system32> Get-ContainerNetwork Name Id Subnets Mode SourceMac DNSServers DNSSuffix ---- -- ------- ---- --------- ---------- --------- nat 8b9a409f-20a7-41b5-b22d-b05ccef1b1ec {172.30.176.0/20} NAT
PS C:\Windows\system32> Get-ContainerNetwork | Remove-ContainerNetwork 確認 Remove-ContainerNetwork は、コンテナーのネットワーク "" を削除します。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"):
PS C:\Windows\system32> Get-ContainerNetwork PS C:\Windows\system32>
PS C:\Windows\system32> Start-Service docker
従来のデフォルトネットワーク172.30.176.0/20を変更する
PS C:\Windows\system32> docker network create -d nat --subnet=192.168.101.0/24 --gateway=192.168.101.1 IsmNatNetwork
物理ネットワークに直接接続する
docker network createで使用するパラメータcom.docker.network.windowsshim.interfaceの値は次のコマンドのNameを指定する
PS C:\Windows\system32> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- イーサネット 2 Intel(R) PRO/1000 PT Dual Port Ser...#2 7 Disconnected 00-15-17-97-2A-0F 0 bps イーサネット Intel(R) PRO/1000 PT Dual Port Serve... 15 Up 00-15-17-97-2A-0E 1 Gbps Npcap Loopback Adapter Npcap Loopback Adapter 19 Up 02-00-4C-4F-4F-50 1.2 Gbps イーサネット 3 Realtek PCIe GBE Family Controller 18 Up 00-26-18-7D-F7-EE 1 Gbps
PS C:\Windows\system32> docker network create -d transparent -o com.docker.network.windowsshim.interface="イーサネット" --subnet=192.168.10.0/24 --gateway=192.168.10.245 IsmNet1 b1280e540af55856bf1a9470ffcea16da511e0c1329be5efdeb8778f738be879
PS C:\Windows\system32> docker run -it --network=IsmNet1 --ip 192.168.10.111 --name ismsv ism/nanoserver:last cmd
PS C:\Windows\system32> docker network create -d l2bridge -o com.docker.network.windowsshim.interface="イーサネット" --subnet=192.168.10.0/24 --gateway=192.168.10.245 IsmNetB 526aff3d1f36de7619a9a1adc1a5c87ed9b2d3250c60c73fd1d465bf40986b20
PS C:\Windows\system32> docker run -it --network=IsmNetB --ip 192.168.10.111 --dns 192.168.10.46 --isolation hyperv --name ismsv ism/nanoserver:last cmd
注意)--isolation=hypervでHyper-Vコンテナを使用するとき「L2 ブリッジ」では--ip 192.168.10.111のようにIPを固定できるが、「透過のネットワーク」では無視され外部DHCPよりIPが割り振られる。(仕様?)
問題:DockerコンテナからDockerサーバにPingが通らない。DockerサーバからDockerコンテナにはPingが通る。
外部PCからDockerサーバにPingが通らない。Dockerサーバから外部PCにはPingが通る。
外部PCからDockerサーバにはリモートデスクトップ接続ができる。
(なんで???)
Dockerサーバ:Dockerが動作しているWindows2016のこと
PS C:\Windows\system32> docker network ls NETWORK ID NAME DRIVER SCOPE 526aff3d1f36 BridgeNet1 l2bridge local 828be0f3273c none null local
PS C:\Windows\system32> docker network rm BridgeNet1 BridgeNet1
PS C:\Windows\system32> docker run -it -d --isolation=hyperv --name ism-iis --network IsmNetB --ip 192.168.10.111 ism/iis cmd a63b5f11ea008579c8fc4fcf37bc6e4ae08d1dbb5d45d23c143bff221598c756
PS C:\Windows\system32> docker run -d --name ismsql --network=IsmNetB --isolation=hyperv -h ismsql --ip 192.168.10.114 \ -e sa_password=******* -e ACCEPT_EULA=Y microsoft/mssql-server-windows-express