Windows Server 2016で
コンテナを動かしてみた
2016年12月17日
System Center User Group Japan
金井 崇
自己紹介
• 名前:金井 崇
• 所属:株式会社IDCフロンティア
• 仕事:2008年からIaaSインフラの設計・構築・運用・提案を担当
• 興味:仮想化 コンテナ オールフラッシュ GPU FPGA
Chef Docker PowerShell VSCode Hadoop
• SNSなど:
• Facebook https://www.facebook.com/anikundesu
• Blog http://www.takanyan.net/
• Twitter @anikundesu
• LinkedIn https://jp.linkedin.com/in/takashikanai/ja
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 2
注意事項
本セッションは、Windows10 Insider Preview(Fast Ring, タイミングによりバージョンが異なる)
とWindows Server 2016 試用版での検証結果をもとに記述をしています。正式版では挙動が異なる
場合がありますので、ご留意ください。
本セッション資料は、個人で準備した環境において、個人的に実施した検証・結果を基に記載して
います。あくまで個人の意見・見解であり、所属する会社・組織及びマイクロソフト社とは関係が
ございません。所属する会社・組織・マイクロソフト社の正式な回答・見解ではない事に留意して
ください。
本資料を閲覧した事により問題が生じた場合、または問題が発生しかけた場合、または生じた一切
の不利益について、発表者は一切の責任を負う事はできませんのでご了承ください。
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 3
本日のアジェンダ
2
3
4
なぜ今コンテナなのか1
Windowsの3つのコンテナ
まとめ
コンテナ環境の構築とデモ
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 4
なぜ今コンテナなのか
Section 1
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 5
スケーラブルなアーキテクチャ
例題)全日本人が1つのセンサーを持ちリアルタイムに
データを集めるIoTデータ収集基盤のサイジング
• 全センサー(Client)数:100,000,000
• TCP接続数/サーバー : 50,000(※)
• 必要なサーバー数 : 2,000(=1億÷5万)
※データをStreaming方式で流すためにTCP接続を張りっぱなしにする前提
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 6
VMでは無理!
第3のプラットフォーム
• IDCが最初に提唱
メインフレーム、クライアント・サーバーに続く次のPlatform
• 第3のPlatformが求められる4つのシーン
Cloud、BigData、Mobile、Social
• 実現にはMicroserviceが必要
ここでコンテナが使われる
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 7
第2 vs 第3のプラットフォーム
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 8
出典:Microsoft: Building a Massively Scalable System with DataStax and Microsoft's Next Generation PaaS Infrastructure
http://www.slideshare.net/planetcassandra/microsoft-building-a-massively-scalable-system-with-datastax-and-microsofts-next-generation-paas-infrastructure
仮想マシン vs コンテナ
仮想マシン
• 仮想マシン毎にOSが独立
• OSが複数動く
• 仮想化Overheadあり
• データは永続的
• 起動は数10秒単位
「ハードウェアの仮想化」
コンテナ
• OSカーネルは共通
• 1つのOS内のプロセス
• Overheadほぼ無し
• データは揮発的
• 起動はミリ秒単位
「プロセス空間の分離」
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 9
Windowsの3つのコンテナ
Section 2
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 10
Windowsの3つのコンテナ機能
1. Windows Serverコンテナー
Windows OS上でプロセス空間の分離
2. Hyper-Vコンテナー
OS KernelをHyper-Vで分離したコンテナ環境を実現
3. Docker for Windows
Hyper-Vで動かすLinux仮想マシンでLinux OSコンテナを実行
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 11
Windows Serverコンテナー
• 一つのOS上でプロセスを分離
• Docker APIでコンテナを操作
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 12
Windows ホストのOS Kernel
Windows Server
コンテナー1
Windows Server
コンテナー2
Process1 Process2
Docker Engine
ホスト
Process
Docker Client
Docker API
Hyper-Vコンテナー
• 一つのコンテナに1つのOS
• Docker APIでHyper-Vの仮想マシンを操作
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 13
Windowsホスト
OS Kernel VM1 VM2
Process1 Process2
Docker Engine
ホスト
Process
Docker Client
Docker API
Hyper-V
ゲスト1
Win Kernel
ゲスト2
Win Kernel
Docker for Windows
• Hyper-V上にLinux仮想マシンを1つ作成
• Docker APIでLinux仮想マシン上のコンテナを操作
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 14
Windowsホスト
OS Kernel VM
Docker Engine
ホスト
Process
Docker Client
Docker API
Hyper-V
Linux Kernel
Linuxコンテナ
Process1
Linuxコンテナ
Process2
コンテナ環境の構築とデモ
Section 3
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 15
Windows Serverコンテナ構築
• Windows Server 2016でのみ利用可能
• 仮想マシンの中でも作成可能
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 16
Windows Serverコンテナ構築手順
1. Windowsの「コンテナー」機能有効化
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 17
コンテナーの機能にチェックを
つけて有効化後、OS再起動
Windows Serverコンテナ構築手順
2. Windows Updateを必ず実施
• Windows Serverコンテナ利用に必須なUpdateあり
3.DockerのインストールとOS再起動
PS C:¥> Install-Module -Name DockerMsftProvider -Repository PSGallery –Force
PS C:¥> Install-Package -Name docker -ProviderName DockerMsftProvider
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 18
DEMO:Windows Serverコンテナ
1. sample-dotnetコンテナの実行
2. Nano Serverのコンテナを起動
3. コンテナプロセスの見え方の確認
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 19
DEMO:Windows Serverコンテナ
1. sample-dotnetコンテナの実行
C:¥> docker run microsoft/sample-dotnet
2. Nano Serverのコンテナを起動
C:¥> docker run -it microsoft/nanoserver cmd
3. コンテナプロセスの見え方の確認
コンテナ内の各プロセスがそのままプロセスとして見える
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 20
Hyper-Vコンテナ構築
• Windows10 Pro、2016で利用可能
• Hyper-Vが必要
• 実行されるコンテナはWindowsベース
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 21
Hyper-Vコンテナ構築手順
1. Windowsの「コンテナー」機能有効化
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 22
Hyper-Vとコンテナーの両方に
チェックをつけて有効化後、
OS再起動
Hyper-Vコンテナ構築手順
2. Dockerのダウンロードとインストール
• https://master.dockerproject.org/ にアクセスしdocker-(ver)-dev.zipを入手
• 管理者権限コマンドプロンプトで次のコマンドを実行
C:¥Program Files¥docker> dockerd –register-service
• 環境変数”Path”に”C:¥Program Files¥docker”を追加
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 23
ダウンロード後、ZIPファイルを
展開し、中身をC:¥Program Filesへ
Hyper-Vコンテナ構築手順
3. Docker Engineサービスの起動
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 24
「Docker Engine」を右クリック
して「開始」
DEMO:Hyper-Vコンテナ
1. Windows Nano Serverのイメージ入手
2. Nano Serverのコンテナを起動
3. コンテナプロセスの見え方の確認
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 25
DEMO:Hyper-Vコンテナ
1. Windows Nano Serverのイメージ入手
C:¥> docker pull microsoft/nanoserver
2. Nano Serverのコンテナを起動
C:¥> docker run -it microsoft/nanoserver cmd
3. コンテナプロセスの見え方の確認
vmwp.exe(Hyper-Vの仮想マシン)として見える
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 26
Docker for Windows構築
• Windows10 Pro、2016で利用可能
• Hyper-VやVirtual Boxの仮想化が必要
• 実行されるコンテナはLinuxベース
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 27
Docker for Windows構築手順
1. Hyper-Vの機能有効化
2. Docker for Windowsのインストール
• https://docs.docker.com/docker-for-windows/ で「Stable Channel」からイ
ンストーラーをダウンロード。
• インストーラーを実行し、ウィザードに従いインストールを実行
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 28
Hyper-Vにチェックをつけて
有効化後、OS再起動
DEMO:Docker for Windows
1. Hello Worldコンテナの起動
2. Ubuntu Linuxのコンテナでbashを起動
3. コンテナプロセスの見え方の確認
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 29
DEMO:Docker for Windows
1. Hello Worldコンテナの起動
C:¥> docker run hello-world
2. Ubuntu Linuxのコンテナでbashを起動
C:¥> docker run -it Ubuntu bash
3. コンテナプロセスの見え方の確認
MobyLinuxVM(Hyper-VのLinux仮想マシン)として見える
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 30
まとめ
Section 4
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 31
まとめ
• IoT、BigData等で求められるスケーラビリティは現行の「第2のプ
ラットフォーム」では実現が難しい
• 次世代のニーズに対応する「第3のプラットフォーム」実現のため
の要素技術の一つがコンテナ
• コンテナはOverheadが非常に少ない高効率な基盤を提供可能
• DockerはWindows/Linuxどちらのコンテナも扱うことができる
• コンテナの実装方法は複数存在し、プロセスの分離度が違う
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 32
参考資料
• MSDN「Windows コンテナー」
https://msdn.microsoft.com/ja-
jp/virtualization/windowscontainers/about/about_overview
• Get Started with Docker for Windows
https://docs.docker.com/docker-for-windows/
• クラウド時代のシステム管理(私の個人Blog)
http://www.takanyan.net/
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 33
Q&A
??
Copyright © 2016 System Center
User Group Japan. All Rights Reserved. 34

Windows Server 2016でコンテナを動かしてみた