IISコンテナーの作成で理解するコンテナーのネットワーク機能――あなたの知らないコンテナーの世界(その3)vNextに備えよ! 次期Windows Serverのココに注目(28)(1/3 ページ)

今回は、「Windows Serverコンテナー」で「Webサーバー(IIS)の役割」を有効化する操作を行いながら、コンテナーのネットワーク機能について説明します。前回と前々回をまだご覧になっていない方は、今回の記事を読む前にご覧ください。

» 2015年09月25日 05時00分 公開
[山市良テクニカルライター]
「vNextに備えよ! 次期Windows Serverのココに注目」のインデックス

連載目次

コンテナーで「Webサーバー(IIS)の役割」を有効化してみよう

 「Windows Serverコンテナー」は、Windows Server 2016 Technical Preview 3(TP3)のServer Coreベースのアプリケーション実行環境です。コンテナー内ではサーバーの役割や機能を有効化したり、Server Coreに対応したアプリケーションをインストールしたりすることができます。例えば、「Webサーバー(IIS)の役割」を有効化すると、コンテナーでIIS(インターネットインフォメーションサービス)のWebサイトをホスティングすることができます。

 なお、Windows Serverコンテナーは、Windows Serverの全てのサーバーの役割や機能をサポートしているわけではないことに注意してください。例えば、「Hyper-Vの役割」はサポートされません。Hyper-Vの役割は「Hyper-Vコンテナー」(Windows Server 2016 TP3では未提供)でサポートされる予定です。Windows Server 2016 TP3ではServerサービスが動作しないという制限があるため、ファイルサーバーとしても機能しません。

 Windows Serverコンテナーの作成、開始、停止、削除の操作については、前回説明しました。今回は、作成したコンテナーで「Webサーバー(IIS)の役割」を有効化してみます。

 とはいっても、複雑な操作は必要ありませんのでご安心ください。コンテナー内で「Install-WindowsFeature」コマンドレットを実行して、「Web-Server」をインストールするだけです(画面1)。コンテナーの作成から始めても、次のように数ステップで完了します。コンテナーの再起動も必要ありません。

コンテナーを作成して、「Webサーバー(IIS)の役割」を有効化する

1 PS C:\> New-Container -Name "MyCont01" -ContainerImageName WindowsServerCore -SwitchName "Virtual Switch"

2 PS C:\> Start-Container -Name "MyCont01"

3 PS C:\> Enter-PSSession -ContainerId (Get-Container -Name "MyCont01").ContainerId -RunAsAdministrator

4 [コンテナーのPSセッション]:PS C:\Windows\System32> Install-WindowsFeature Web-Server

5 [コンテナーのPSセッション]:PS C:\Windows\System32> Exit


画面1 画面1 Windows Serverコンテナーに「Webサーバー(IIS)の役割」をインストールしたところ。「Install-WindowsFeature」コマンドレットが失敗した場合は、もう一度実行すれば成功するはず。これは、Windows Server 2016 TP3の既知の問題

 「Install-WindowsFeature」コマンドレットはコンテナーのPSセッションで対話的で実行する他、次のように「Invoke-Command」コマンドレットでコンテナーホスト側から実行することもできます。

PS C:\> Invoke-Command {Install-WindowsFeature Web-Server} -ContainerID (Get-Container -Name "MyCont01").ContainerId -RunAsAdministrator


ポートの静的マッピングで受信トラフィックをコンテナーに転送する

 前回も触れましたが、Windows Serverコンテナーは、コンテナーホストと同じ物理ネットワークに直接接続されることはなく、コンテナーホストが提供するNAT(ネットワークアドレス変換)の背後に配置されます。そのため、「Webサーバー(IIS)の役割」を有効化しても、物理ネットワーク側からコンテナーのWebサイトに接続する方法がありません

 コンテナーのWebサイトのTCPポート「80」に外部から接続できるようにするには、「セキュリティが強化されたWindowsファイアウオール」の受信の規則と、NATのポートフォワーディングを構成します。

 例えば、コンテナーホストの外部IPアドレスのTCPポート「8080」を、コンテナーのIPアドレス「172.16.0.2」のTCPポート「80」に転送するには、コンテナーホストで次の2つのコマンドラインを実行します。

1 PS C:> New-NetFirewallRule -Name "ファイアウオールの規則名" -DisplayName "規則の表示名" -Protocol TCP -LocalPort @(8080) -Action Allow

2 PS C:> Add-NetNatStaticMapping -NatName ContainerNAT -Protocol TCP -ExternalPort 8080 -ExternalIPAddress 0.0.0.0 -InternalPort 80 -InternalIPAddress 172.16.0.2


 1つ目のコマンドラインは、ローカルのTCPポート「8080」への接続を許可するファイアウオールの受信の規則を作成しています。2つ目のコマンドラインは、ローカルのTCPポート「8080」を、コンテナーのTCPポート「80」にポートフォワーディングするための静的マッピング情報を作成しています。

 これで、コンテナーホストの外部にあるコンピューターのWebブラウザーからURL「http://<コンテナーの外部IPアドレス>:8080/」にアクセスすれば、コンテナーのWebサイトに接続できるようになります(画面2)。

画面2 画面2 Windowsファイアウオールの受信の規則とNATのポートフォワーディングを構成すると、コンテナーのWebサイトに外部から接続できるようになる

 なお、コンテナーホストからコンテナーへのアクセスに対しては、NATのポートフォワーディングが機能しないことに注意してください。コンテナーホストとコンテナーは同じ「172.16.0/12」のIPサブネットに接続されており、コンテナーホストからはコンテナーのIPアドレスでアクセスすることができます。

 念のため、Windowsファイアウオールの受信の規則とNATの構成を削除する方法も紹介しておきましょう。先ほど作成した受信の規則と静的ポートマッピング情報は、次の2つのコマンドラインで削除できます。

1 PS C:> Get-NetFirewallRule -Name "ファイアウオールの規則名" | Remove-NetFirewallRule

2 PS C:> Remove-NetNatStaticMapping -NatName ContainerNAT -StaticMappingID (Get-NetNatStaticMapping|? {$_.ExternalPort -eq 8080}).StaticMappingId


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。