検索
連載

WindowsコンテナーをDockerから操作するには?――あなたの知らないコンテナーの世界(その4)vNextに備えよ! 次期Windows Serverのココに注目(29)(3/3 ページ)

前回までは、Windows Server 2016 Technical Preview 3(TP3)の「Windows Serverコンテナー」を、PowerShellコマンドレットによるネイティブな方法で操作してきました。今回は、Windows Server 2016 TP3における「Docker」のサポートを説明します。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

「-p」パラメーターによるアプリケーションのネットワーク公開

 コンテナーのネットワーク接続は、NAT(ネットワークアドレス変換)タイプの仮想スイッチ「Virtual Switch」と、NATの構成「ContainerNAT」により実現されます。これは、PowerShellでコンテナーを作成する場合と同様です。PowerShellの場合は、「New-Container」コマンドレットでコンテナーを作成する際に「-SwitchName」パラメーターに仮想スイッチを指定しましたが、Dockerコマンドでは何も指定しなくても「docker run」コマンドでコンテナーを作成、実行すると、仮想スイッチに接続されます。

 NATの背後に配置されるコンテナーのネットワークサービスに対して、コンテナーホストの外部からの接続を可能にするには、PowerShellでは本連載の第28回「IISコンテナーの作成で理解するコンテナーのネットワーク機能」で説明したように、コンテナーホスト側で「Windowsファイアウォールの規則の作成(New-NetFirewallRuleコマンドレットやnetshコマンド)」と「ポートフォワーディングの設定(Add-NetNatStaticMappingコマンドレット)」が必要になります。

 対して、Dockerコマンドでは「docker run」コマンドに「-p <コンテナーホストのポート番号>:<コンテナー側のポート番号>」パラメーターを指定して実行することで、ポートフォワーディングの設定が自動構成されます(画面6)。追加で構成する必要があるのは、コンテナーホスト側でのWindowsファイアウォールの規則の作成だけです。

画面6
画面6 「docker run」コマンドに「-p」パラメーターを指定することで、NATのポートフォワーディングが自動構成される。Windowsファイアウォールを構成すれば、外部からコンテナーに接続可能になる

Docker HubにはWindows Serverコンテナーベースのイメージも

 Docker Hubを検索すると、Windows Server TP3用のレジストリでWindows Serverコンテナーベースのイメージが利用可能になっています。IIS(microsoft/iis)やASP.NET(microsoft/dnx-clr)、Ruby(microsoft/ruby)、Python(microsoft/phython)などです。これらのイメージは、「docker pull」コマンドでコンテナーホストにダウンロードすることができます(画面7)。

画面7
画面7 Docker HubからWindows Serverコンテナーベースのイメージをダウンロードする

 例えば、IISのイメージ「microsoft/iis」をダウンロードし、「docker run」コマンドでコンテナーを作成して実行すると、IISを素早く展開できます(画面8)。現状、「docker push」コマンドは機能しませんが、Dockerエコシステムと統合されたDockerらしい使い方を示す例です。これは、PowerShellベースの管理にはない機能です(Export-ContainerImage/Import-ContainerImageコマンドレットによる、ファイルベースのエクスポート/インポートは可能です)。

画面8
画面8 Docker HubからIISのイメージ(microsoft/iis)をダウンロードして、コンテナーを作成、実行する

リモートのDockerクライアントから接続するには

 ここまで、DockerコマンドによるWindows Serverコンテナーのローカル管理について、Dockerと同じように操作できることを説明してきましたが、Dockerはリモート管理が可能です。ただし、LinuxベースのDockerと同様、Dockerのリモート管理を有効にするには「TLSの構成」が必要になります。

 Windows Server 2016 TP3のDocker Daemonは、既定で「TLSなしのローカル接続(ローカルのTCPポート2375に対する接続)」のみが有効になっています。リモート接続(TCPポート2376)に対応させるためには、「openssl」コマンドを使用してTLS接続用の証明書を作成し、「C:¥ProgramData¥docker¥certs.d」フォルダーに配置する必要があります。TLS接続用の証明書の具体的な作成手順については、筆者の個人のブログにまとめてありますので参考にしてください。

 次の画面9は、リモートのWindowsおよびLinux(CoreOS)のDockerクライアントから、Windows Server 2016 Technical Preview 3のWindows Serverコンテナーを操作しているところになります。

画面9
画面9 リモートのWindowsやLinuxのDockerクライアントから、Windows Serverコンテナーを操作しているところ
「vNextに備えよ! 次期Windows Serverのココに注目」バックナンバー

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Hyper-V(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。


前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る