Hyper-V、オンプレミスでもコンテナを
横山 哲也
Microsoft MVP
トレノケート株式会社
(旧グローバルナレッジネットワーク)
https://www.trainocate.co.jp
自社紹介: トレノケート(Trainocate)
2
Training + Advocate(先導者)
かばん語(portmanteau)の一種
Trainocate (トレノケート)
自己紹介: 横山 哲也 (トレノケート株式会社)
 2003年~ マイクロソフトMVP
 だいたいDirectory Servicesで受賞
 2017年からはCloud and Datacenter Management
 最近の著書(いずれも日経BP)
 ひと目でわかるAzure
基本から学ぶサーバー&ネットワーク構築 改訂新版
 グループポリシー逆引きリファレンス厳選98(監修・共著)
 ブログ: ヨコヤマ企画 http://yp.g20k.jp/
 好きなクラウドサービス: 仮想マシンテンプレート
 好きなアイドル: まなみのりさ
 好きなシンガーソングライター: 宮崎奈穂子
3
Agenda
 今日の目標
 Windowsで使えるコンテナの種類を識別する
 コンテナについてもっと考える
 Agenda
 Windowsで使えるコンテナ
 仮想化アーキテクチャ
 Windowsでコンテナを使う方法
 Windowsでコンテナを使う意味
 そもそものコンテナの目的
 結論
4
Windowsで使えるコンテナ
 Docker for Windows (by Docker Inc.)
 Hyper-Vベース
 WSL(Windows Subsystem for Linux)ベース
 Docker互換コンテナー (by Microsoft)
 Windowsコンテナー
 Hyper-Vコンテナー
5
どれを使えばいいのか分からない
理屈が分かれば応用がきく
まだ、これからも増えるのでは?
仮想化アーキテクチャ
 タイプ1仮想化
 タイプ2仮想化
 コンテナ
6
仮想化アーキテクチャ:タイプ1仮想化
 ハードウェア仮想化 = ハイパーバイザー方式
 スーパーバイザー(OS)よりもハードウェア寄り
 ホストとゲストを完全分離
 利用例
 System 370 (1972年)
 VMware ESXi
 Hyper-V (物理OSは親パーティションとなる)
7
ハードウェア
ハイパーバイザー
ゲスト
OS
ゲスト
OS
ゲスト
OS
仮想HW 仮想HW 仮想HW
ハードウェア
ハイパーバイザー(Hyper-V)
ホスト
OS(親)
ゲスト
OS
ゲスト
OS
仮想HW 仮想HW
仮想化アーキテクチャ:タイプ2仮想化
 ソフトウェア仮想化 = ホスト方式
 すべてをソフトウェアでエミュレート
 ホストとゲストを完全分離 (オーバーヘッド大)
 利用例
 VMware GSX
 Microsoft Virtual Server
 【参考】x86プロセッサ
 オリジナル命令セットでは
タイプ1仮想化困難
 Intel VT-x / AMD-V 拡張
タイプ2仮想化サポート
8
ハードウェア
ホストOS
ゲスト
OS
ゲスト
OS
ゲスト
OS
仮想HW 仮想HW 仮想HW
仮想化機能
仮想化アーキテクチャ:コンテナ
 パーティショニング ≒ コンテナ
 「パーティショニング」はさまざまな意味で使われる
 ゲストは、カーネル機能の一部をホストと共有
 ゲストが軽量
 利用例
 Docker
 制約
 ホストとゲストは同一OS
9
ハードウェア
ホストOS
ゲスト
OS
ゲスト
OS
ゲスト
OS
コンテナサポート共有
仮想化アーキテクチャ:まとめ
10
ハードウェア
ホストOS
ゲスト
OS
ゲスト
OS
コンテナサポート
ハードウェア
ハイパーバイザー
ゲスト
OS
ゲスト
OS
仮想HW 仮想HW
ハードウェア
ホストOS
ゲスト
OS
ゲスト
OS
仮想HW 仮想HW
仮想化機能
 タイプ2仮想化
 もっと重い
 ホスト/ゲスト分離
 ホストOSに依存
 コンテナ
 軽い
 ホスト/ゲスト結合
 ホストOSに依存
 タイプ1仮想化
 重い
 ホスト/ゲスト分離
 ホストOSに一部依存
(実装依存)
仮想化アーキテクチャ:もう1つの仮想化(環境サブシステム)
 環境サブシステム: WindowsのAPI実装方法
 カーネルを構築するわけではない
 一種のAPIゲートウェイ
 必須の環境サブシステム
 Windows環境サブシステム(GUI担当)
 オプションの環境サブシステム
 Windows Subsystem for Linux (WSL)
 廃止された環境サブシステム
 OS/2環境サブシステム...OS/2 1.1互換
 POSIX環境サブシステム...POSIX 1.0互換
 Windows Services for UNIX (SFU)...Interix由来
 Subsystem for UNIX-based Applications (SUA)
11
仮想化アーキテクチャ:環境サブシステムの特徴
 画面操作はWindows環境サブシステムに依頼
 APIのみ提供
 カーネルは提供しない
 機能制限あり
- 例:WSLのネットワーク
 EXEヘッダーに
サブシステム指定
 つまりWindows形式
 他のOSとは非互換
 WSLはUbuntu互換
- Win32アプリ起動可
12
ハードウェア
Executiveサービス
HAL(ハードウェア抽象化層)
マイクロカーネル
Windows環境
サブシステム
OS/2
サブシステム
WSL
Windows
App.
POSIX
App.
Linux
App.
13
以上をふまえて
Windowsでコンテナを使う方法
 Docker for Windows (by Docker Inc.)
 Hyper-Vベース
http://www.atmarkit.co.jp/ait/articles/1609/01/news053.html
- 以前のバージョンはVirtualBoxで動作
 WSL(Windows Subsystem for Linux)ベース
http://www.nuits.jp/entry/docker-on-wsl
- 非サポート、ネットワーク周りで動作しない機能あり
 コンテナー (by Microsoft)
 Windowsコンテナー
- Windows Server 2016のみ
 Hyper-Vコンテナー
- Windows 10
- Windows Server 2016
http://www.atmarkit.co.jp/ait/articles/1610/26/news042.html
14
Windowsでコンテナを使う方法:各コンテナの特徴
15
 結論
 Docker互換を最優先...純正Docker(Hyper-V)
 軽量Linux...Docker(WSL) ただし非サポート
 隔離Linux...Hyper-Vコンテナー/Docker(Hyper-V)
 軽量Windows...Windowsコンテナー
 隔離Windows...Hyper-Vコンテナー
Docker Microsoft
Hyper-V WSL Hyper-V Windows
サポート ○ × ○ ○
対象OS Linux Linux Windows/Linux Windows
軽量性 × ○ × ○
隔離性 ○ × ○ ×
Windowsでコンテナを使う意味
 Linuxを使いたい
 別にWindowsホストを使わなくても...
 Windowsを使いたい
 GUIは、原則使えないけどいいの?
16
Windowsでコンテナを使う意味:これからのWindows (想像)
 マルチパーソナリティ
 Windows NT 3.1(1993年)の設計目標を実現
 WSLのサーバー対応
 WindowsもLinuxもどちらのアプリケーションも実行
 Linux以上に使いやすいLinux環境
 コードによる構成の強化
 Server Coreの標準化
 宣言的構成の強化
 履歴管理の強化
 コンテナエンジンとしてのWindows
17
そもそものコンテナの目的
 Infrastructure as Code
 IT基盤にソフトウェア開発技法を適用
- コードによる自動化
- 宣言的構成の強化による安定運用...あるべき姿の記述
- バージョン管理、テスト、展開、デザインパターンの考え方
 Immutable Infrastructure
 一度作ったサーバーは変更しない
 変更するのではなく作り直す
 使い捨てのインフラストラクチャー
18
そもそものコンテナの目的:DockerとKubernetes
 Docker
 イメージ作成は基本的にコマンド = コードで作る
 イメージはライブラリとして、履歴を含めて管理
 実行中のイメージは差し替えるか停止するかどちらか
保守作業はあまりしない = イミュータブル
 Kubernetes
 Dockerイメージの展開・実行・運用管理
 Docker管理のツール
19
クラウドに任せたい
管理作業が意外に多い
結論
20
クラウドサービスが動いていても
通信経路に障害があると使い物にならない
しばらくはオンプレミスでやってみよう
天津風(あまつかぜ)
雲の通ひ路(かよひじ)吹き閉ぢよ
をとめの姿 しばしとどめむ
僧正遍昭
しばらく使うのはいいが、
結局はクラウドに帰ることになるだろう
まとめ
 今日の目標
 Windowsで使えるコンテナの種類を識別する
 コンテナについてもっと考える
 Agenda
 Windowsで使えるコンテナ
 仮想化アーキテクチャ
 Windowsでコンテナを使う方法
 Windowsでコンテナを使う意味
 そもそものコンテナの目的
 結論「コンテナはクラウドの方が良い」
21
22

Hyper-V、オンプレミスでもコンテナを