Win Docker(Windows2016TP4)にIISをインストール

更新日 2016-03-21 (月) 20:17:28

Windows2016TP4 US版のインストール

日本語版はエラー(コンテナにIISをインストールできない)するので英語版をインストール。

この時、地区もキーボードは101を選択のこと。

Download

Win-Docker-IIS0.png

IISをインストールするコンテナを作成

以降はすべて英語モードのPowerShaell (\→バックスラッシュ)

PS C:\Windows\system32> $Container=New-Container -Name "IISC" \
-ContainerImageName "WindowsServerCore" -SwitchName "Virtual Switch"

コンテナを起動

PS C:\Windows\system32> Start-Container -Name IISC

コンテナにPowerShellセッションを接続

PS C:\Windows\system32> $Container=Get-Container -Name IISC
PS C:\Windows\system32> Enter-PSSession -ContainerId $Container.ContainerId -RunAsAdministrator

コンテナにIISをインストール

[IISC]: PS C:\Windows\system32> Install-WindowsFeature Web-Server

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Common HTTP Features, Defaul...

Win-Docker-IIS1.png

PowerShellのセッションの接続を閉じて、コンテナを停止

[IISC]: PS C:\Windows\system32> EXIT
PS C:\Windows\system32> Stop-Container $Container
PS C:\Windows\system32> New-ContainerImage -ContainerName $container.Name -Publisher "JE2ISM" -Name "IISCImage" -Version 1.0

Name      Publisher Version IsOSImage
----      --------- ------- ---------
IISCImage CN=JE2ISM 1.0.0.0 False

IISをインストールしたコンテナをコンテナイメージとして保存しておくことで、何度でもコピーして使い回すことができる

作成したコンテナイメージをエクスポートしてAPPXファイルとし、他のコンテナホストにインポートすることで、コンテナイメージを配布するできる

エクスポート

PS C:\Windows\system32> $image = Get-ContainerImage -Name "IISCImage"
PS C:\Windows\system32> Export-ContainerImage -Image $image -Path "C:\DockerImages"

PS C:\Windows\system32> dir C:\DockerImges\


    Directory: C:\DockerImges


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/20/2016   5:26 PM      169458212 CN=JE2ISM_IISCImage_1.0.0.0.APPX

インポート

PS C:\Windows\system32> Import-ContainerImage -Path "C:\DockerImages\CN=JE2ISM_IISCImage_1.0.0.0.APPX"

Name      Publisher Version IsOSImage
----      --------- ------- ---------
IISCImage CN=JE2ISM 1.0.0.0 False

IISコンテナの公開''

基本ポートフォーワード

NetWorkの確認

[IISC]: PS C:\Windows\system32> ipconfig

Windows IP Configuration 


Ethernet adapter vEthernet (Virtual Switch-37FF57D3-DB68-4719-97D7-32507F1F2AD4-0):

   Connection-specific DNS Suffix  . : flets-west.jp
   Link-local IPv6 Address . . . . . : fe80::4d10:4fe6:7569:505e%17
   IPv4 Address. . . . . . . . . . . : 172.16.0.2
   Subnet Mask . . . . . . . . . . . : 255.240.0.0
   Default Gateway . . . . . . . . . : 172.16.0.1

NATの確認

[IISC]: PS C:\Windows\system32> Get-NetNat
 

Name                             : ContainerNAT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 172.16.0.0/12
IcmpQueryTimeout                 : 30
TcpEstablishedConnectionTimeout  : 1800
TcpTransientConnectionTimeout    : 120
TcpFilteringBehavior             : AddressDependentFiltering
UdpFilteringBehavior             : AddressDependentFiltering
UdpIdleSessionTimeout            : 120
UdpInboundRefresh                : False
Store                            : Local
Active                           : True
  • NatName:NAT名
  • Protocol :HTTPの公開なのでTCP
  • ExternalIPAddress:0.0.0.0(アクセス許可IP)
  • InternalIPAddress:IISコンテナのIPアドレス
  • InternalPort:コンテナのWebサイトのポート番号
  • ExternalPort :公開するポート番号

ポートフォーワードの設定

C:\> 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

コンテナホストのファイアウォールのTCP80番ポートを開く

GUIの「Windowsファイアウォール」でも設定可能

ホスト側で

PS C:\> if (!(Get-NetFirewallRule | where {$_.Name -eq "TCP80"})) \
{New-NetFirewallRule -Name "TCP80" -DisplayName "HTTPon TCP/80" \
-Protocol tcp -LocalPort 80 -Action Allow -Enabled True}


Name                  : TCP80
DisplayName           : HTTP on TCP/80
Description           :
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : The rule was parsed successfully from the store. (65536) 
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

Win-Docker-IIS2.png

確認

  • ファイアウォールのGUIで確認

Win-Docker-IIS3.png

NATの接続確認

[IISC]: PS C:\Windows\system32> Get-NetNatSession


NatName                    : ContainerNAT
InternalRoutingDomainId    : {b1062982-2b18-4b4f-b3d5-a78ddb9cdd49}
CreationTime               : 3/20/2016 5:55:18 PM
Protocol                   : 6
InternalSourceAddress      : 172.16.0.2
InternalSourcePort         : 80
InternalDestinationAddress : 192.168.10.47
InternalDestinationPort    : 56573
ExternalSourceAddress      : 192.168.10.93
ExternalSourcePort         : 80
ExternalDestinationAddress : 192.168.10.47
ExternalDestinationPort    : 56573

参考

https://www.gmo.jp/report/single/?art_id=200


添付ファイル: fileWin-Docker-IIS3.png 47件 [詳細] fileWin-Docker-IIS2.png 48件 [詳細] fileWin-Docker-IIS1.png 48件 [詳細] fileWin-Docker-IIS0.png 52件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-03-21 (月) 20:17:28 (706d)