前回に、引き続き Windows Server 2016 TP 4 のコンテナ技術を試してみました。
今回は、前回構築したコンテナホストの上でWindows Server Container と、Hyper-V Container のコンテナを作ってみます。
Windows Server Container
まずは、Windows Server Container 。
参考にしたのは、下記のサイトです。
https://msdn.microsoft.com/ja-jp/virtualization/windowscontainers/quick_start/manage_powershell
まずは、「ServerCoreDemo01」という名前のコンテナを作成して起動し、リモートPowerShell で接続するまで
PS C:UsersAdministrator> Get-ContainerImage Name Publisher Version IsOSImage ---- --------- ------- --------- NanoServer CN=Microsoft 10.0.10586.0 True WindowsServerCore CN=Microsoft 10.0.10586.0 True PS C:UsersAdministrator> New-Container -Name ServerCoreDemo01 -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch" Name State Uptime ParentImageName ---- ----- ------ --------------- ServerCoreDemo01 Off 00:00:00 WindowsServerCore PS C:UsersAdministrator> Start-Container -Name ServerCoreDemo01 PS C:UsersAdministrator> Enter-PSSession -ContainerName ServerCoreDemo01 -RunAsAdministrator
なんとなく、コンテナの中でGet-Process を実行した時のログ
[ServerCoreDemo01]: PS C:Windowssystem32> get-process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
83 5 932 4472 ...72 0.03 2168 2 CExecSvc
162 9 1252 3848 ...00 0.44 2852 2 csrss
0 0 0 4 0 0 0 Idle
532 18 2608 9316 ...95 0.50 2420 2 lsass
197 13 2288 8604 ...99 0.17 3452 2 msdtc
210 17 26572 25552 ...04 0.52 3220 2 powershell
445 25 41836 56904 ...59 3.72 3708 2 powershell
179 8 1816 5456 ...73 0.78 2064 2 services
46 2 348 1140 ...58 0.23 1164 0 smss
134 9 1596 7124 ...16 0.08 3580 2 SppExtComObj
215 11 6632 18308 ...16 1.86 3532 2 sppsvc
235 13 1672 6232 ...83 0.23 444 2 svchost
897 32 10084 26108 ...88 2.70 728 2 svchost
213 15 3076 9408 ...00 0.42 2056 2 svchost
280 13 2520 9824 ...36 0.30 2176 2 svchost
282 11 2176 8284 ...93 0.27 2260 2 svchost
81 6 996 4780 ...91 0.03 2456 2 svchost
255 12 6592 10816 ...95 0.83 2688 2 svchost
381 30 4540 14152 ...62 0.45 2772 2 svchost
1798 0 124 136 3 45.70 4 0 System
98 9 972 4688 ...76 0.33 1176 2 wininit
リモートPowerShell を抜けて、コンテナホスト上でGet-Process を実行した時のログ
PS C:UsersAdministrator> get-process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
78 5 932 4476 ...72 0.03 2168 2 CExecSvc
42 4 1676 3020 ...69 0.02 2032 0 cmd
45 5 1672 3304 ...96 0.02 2384 1 cmd
102 7 1188 5680 ...12 4.02 1972 0 conhost
117 10 10464 11664 ...62 22.61 2392 1 conhost
214 11 1740 4164 ...02 3.31 484 0 csrss
135 10 1176 7336 ...01 10.23 560 1 csrss
159 9 1252 3844 ...00 0.44 2852 2 csrss
167 13 32092 22532 34955 30.61 568 0 docker
0 0 0 4 0 0 0 Idle
765 20 4300 12284 ...99 2.92 704 0 lsass
524 18 2608 9316 ...95 0.50 2420 2 lsass
193 12 2380 8788 ...97 0.14 1008 0 msdtc
197 13 2288 8608 ...99 0.17 3452 2 msdtc
440 60 95572 41500 ...82 75.56 1896 0 MsMpEng
101 7 1612 5756 56 0.02 1824 0 nssm
710 32 67828 104444 ...19 21.80 2724 1 powershell
210 17 26572 25552 ...04 0.52 3220 2 powershell
210 9 2264 5936 ...73 1.11 692 0 services
178 8 1816 5456 ...73 0.78 2064 2 services
49 2 356 1176 ...58 0.09 376 0 smss
46 2 348 1140 ...58 0.23 1164 0 smss
134 9 1596 7124 ...16 0.08 3580 2 SppExtComObj
215 11 6632 18308 ...16 1.86 3532 2 sppsvc
491 19 4356 11628 ...55 0.36 432 0 svchost
233 13 1672 6232 ...83 0.23 444 2 svchost
376 16 9528 14492 ...05 7.67 516 0 svchost
897 32 10084 26108 ...88 2.70 728 2 svchost
1260 39 18100 36428 ...53 19.08 760 0 svchost
373 12 3056 9512 ...95 1.33 788 0 svchost
424 22 5112 12616 ...09 2.73 808 0 svchost
307 14 2184 6956 ...86 1.22 848 0 svchost
317 21 8580 13936 ...62 0.34 968 0 svchost
248 13 2604 8672 ...06 3.28 976 0 svchost
577 35 8660 20456 ...75 8.64 1196 0 svchost
377 31 10220 14896 ...27 5.88 1304 0 svchost
279 16 6976 16192 ...46 6.78 1784 0 svchost
213 15 3076 9408 ...00 0.42 2056 2 svchost
276 13 2464 9812 ...35 0.30 2176 2 svchost
276 11 2124 8276 ...92 0.27 2260 2 svchost
81 6 996 4780 ...91 0.03 2456 2 svchost
254 12 6592 10820 ...95 0.83 2688 2 svchost
373 30 4540 14152 ...62 0.45 2772 2 svchost
1742 0 124 136 3 45.77 4 0 System
171 11 1712 9080 ...48 0.19 2244 1 taskhostw
157 12 2468 11052 ...97 1.47 2596 0 vmcompute
700 23 12024 29048 ...83 3.20 1996 0 vmms
117 8 1372 7068 ...89 0.05 1076 0 VSSVC
94 8 816 4716 ...75 0.09 584 0 wininit
98 9 972 4688 ...76 0.33 1176 2 wininit
181 8 1568 8428 ...06 0.27 616 1 winlogon
138 8 1712 7288 ...85 0.16 932 0 WmiPrvSE
続いて、先ほど作成した「ServerCoreDemo01」に IIS をインストールし、「ServerCoreIIS」というイメージに保存するまで
PS C:UsersAdministrator> Enter-PSSession -ContainerName ServerCoreDemo01 -RunAsAdministrator
[ServerCoreDemo01]: PS C:Windowssystem32> Install-WindowsFeature web-server
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Common HTTP Features, Default Document, D...
[ServerCoreDemo01]: PS C:Windowssystem32> exit
PS C:UsersAdministrator> Stop-Container -Name ServerCoreDemo01
PS C:UsersAdministrator> get-container
Name State Uptime ParentImageName
---- ----- ------ ---------------
ServerCoreDemo01 Off 00:00:00 WindowsServerCore
PS C:UsersAdministrator> New-ContainerImage -ContainerName ServerCoreDemo01 -Name ServerCoreIIS -Publisher Demo -Version 1.0
Name Publisher Version IsOSImage
---- --------- ------- ---------
ServerCoreIIS CN=Demo 1.0.0.0 False
PS C:UsersAdministrator> Get-ContainerImage
Name Publisher Version IsOSImage
---- --------- ------- ---------
ServerCoreIIS CN=Demo 1.0.0.0 False
NanoServer CN=Microsoft 10.0.10586.0 True
WindowsServerCore CN=Microsoft 10.0.10586.0 True
不要となったコンテナの削除
PS C:UsersAdministrator> Remove-Container -Name ServerCoreDemo01 -Force
IISをインストールしたイメージの展開
80ポートの接続設定も行っています。
PS C:UsersAdministrator> Start-Container -Name IISDemo
PS C:UsersAdministrator> Invoke-Command -ContainerName IISDemo {ipconfig}
Windows IP Configuration
Ethernet adapter vEthernet (Virtual Switch-A8030751-BFA8-4DE0-BDED-F36AF226A064-0):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::b403:ac46:d729:1b82%17
IPv4 Address. . . . . . . . . . . : 172.16.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 172.16.0.1
PS C:UsersAdministrator> if (!(Get-NetNatStaticMapping | where {$._ExternalPort -eq 80 })) {
>> Add-NetNatStaticMapping -NatName "ContainerNat" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 172.16.0.2 -InternalPort 80 -ExternalPort 80
>> }
StaticMappingID : 0
NatName : ContainerNat
Protocol : TCP
RemoteExternalIPAddressPrefix : 0.0.0.0/0
ExternalIPAddress : 0.0.0.0
ExternalPort : 80
InternalIPAddress : 172.16.0.2
InternalPort : 80
InternalRoutingDomainId : {00000000-0000-0000-0000-000000000000}
Active : True
PS C:UsersAdministrator> if(!(Get-NetFirewallRule | where {$_.Name -eq "TCP80"})){
>> New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP/80" -protocol tcp -LocalPort 80 -Action Allow -Enable True}
PS C:UsersAdministrator>
コンテナホストのIP(192.168.0.8)にブラウザで接続するとIISの初期画面を閲覧できます。

Hyper-V Container
下記サイトを参考にしました。
https://msdn.microsoft.com/ja-jp/virtualization/windowscontainers/management/hyperv_container
作成するコンテナは、「HyperVCon」です。
PS C:UsersAdministrator> Get-Container
Name State Uptime ParentImageName
---- ----- ------ ---------------
NanoServerDemo Off 00:00:00 NanoServer
IISDemo Running 07:44:07.2470000 ServerCoreIIS
PS C:UsersAdministrator> New-Container -Name HyperVCon -ContainerImageName NanoServer -Switch "Virtual Switch" -RuntimeType HyperV
PS C:UsersAdministrator> Get-Container
Name State Uptime ParentImageName
---- ----- ------ ---------------
NanoServerDemo Off 00:00:00 NanoServer
IISDemo Running 07:45:59.7650000 ServerCoreIIS
HyperVCon Off 00:00:00 NanoServer
PS C:UsersAdministrator> Get-Container | Select ContainerName , RunTimeType
ContainerName RuntimeType
------------- -----------
NanoServerDemo Default
IISDemo Default
HyperVCon HyperV
PS C:UsersAdministrator> Start-Container -Name HyperVCon
PS C:UsersAdministrator> Get-Container
Name State Uptime ParentImageName
---- ----- ------ ---------------
NanoServerDemo Off 00:00:00 NanoServer
IISDemo Running 07:50:50.6680000 ServerCoreIIS
HyperVCon Running 00:00:37.2250000 NanoServer
PS C:UsersAdministrator> Enter-PSSession -ContainerName HyperVCon -RunAsAdministrator
[HyperVCon]: PS C:windowssystem32configsystemprofileDocuments> get-process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
5 908 4256 ...73 0.25 1452 1 CExecSvc
4 444 1524 ...63 0.17 952 1 csrss
0 0 4 0 0 0 Idle
16 2404 9444 ...89 2.11 1012 1 lsass
51 34448 52432 ...32 26.20 484 1 powershell
8 1548 5100 ...68 2.27 996 1 services
2 268 1076 ...58 0.55 904 0 smss
12 1352 5540 ...79 0.84 580 1 svchost
7 1508 5408 ...80 0.67 748 1 svchost
14 12468 20640 ...15 3.41 1084 1 svchost
11 5072 8872 ...83 1.19 1156 1 svchost
10 1564 6208 ...78 0.52 1244 1 svchost
13 2620 8660 ...93 0.81 1268 1 svchost
0 80 80 2 19.86 4 0 System
7 820 3696 ...67 0.41 976 1 wininit
7 2336 7312 ...79 0.58 1436 1 WmiPrvSE
[HyperVCon]: PS C:windowssystem32configsystemprofileDocuments> exit
もうちょっと、色々触ってみようかなー。


コメント