windows server 2016でコンテナを動かしてみた
TRANSCRIPT
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 WindowsHyper-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 Windowshttps://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