Windows Server

Windows Server Container とHyper-V Container のコンテナを作ってみた

前回に、引き続き 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

 

もうちょっと、色々触ってみようかなー。

-Windows Server
-,