windows server 2016でコンテナを動かしてみた

34
Windows Server 2016コンテナを動かしてみた 2016年12月17日 System Center User Group Japan 金井

Upload: -

Post on 16-Apr-2017

690 views

Category:

Technology


2 download

TRANSCRIPT

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

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

2016年12月17日

System Center User Group Japan

金井 崇

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

自己紹介

• 名前:金井 崇

• 所属:株式会社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

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

注意事項

本セッションは、Windows10 Insider Preview(Fast Ring, タイミングによりバージョンが異なる)

とWindows Server 2016 試用版での検証結果をもとに記述をしています。正式版では挙動が異なる場合がありますので、ご留意ください。

本セッション資料は、個人で準備した環境において、個人的に実施した検証・結果を基に記載しています。あくまで個人の意見・見解であり、所属する会社・組織及びマイクロソフト社とは関係がございません。所属する会社・組織・マイクロソフト社の正式な回答・見解ではない事に留意してください。

本資料を閲覧した事により問題が生じた場合、または問題が発生しかけた場合、または生じた一切の不利益について、発表者は一切の責任を負う事はできませんのでご了承ください。

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 3

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

本日のアジェンダ

2

3

4

なぜ今コンテナなのか1

Windowsの3つのコンテナ

まとめ

コンテナ環境の構築とデモ

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 4

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

なぜ今コンテナなのか

Section 1

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 5

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

スケーラブルなアーキテクチャ

例題)全日本人が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では無理!

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

第3のプラットフォーム

• IDCが最初に提唱メインフレーム、クライアント・サーバーに続く次のPlatform

• 第3のPlatformが求められる4つのシーンCloud、BigData、Mobile、Social

• 実現にはMicroserviceが必要ここでコンテナが使われる

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 7

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

第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

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

仮想マシン vs コンテナ

仮想マシン• 仮想マシン毎にOSが独立

• OSが複数動く

• 仮想化Overheadあり

• データは永続的

• 起動は数10秒単位

「ハードウェアの仮想化」

コンテナ• OSカーネルは共通

• 1つのOS内のプロセス

• Overheadほぼ無し

• データは揮発的

• 起動はミリ秒単位

「プロセス空間の分離」

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 9

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

Windowsの3つのコンテナ

Section 2

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 10

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

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

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

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

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

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

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

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

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

コンテナ環境の構築とデモ

Section 3

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 15

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

Windows Serverコンテナ構築

• Windows Server 2016でのみ利用可能

• 仮想マシンの中でも作成可能

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 16

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

Windows Serverコンテナ構築手順

1. Windowsの「コンテナー」機能有効化

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 17

コンテナーの機能にチェックをつけて有効化後、OS再起動

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

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

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

DEMO:Windows Serverコンテナ

1. sample-dotnetコンテナの実行

2. Nano Serverのコンテナを起動

3. コンテナプロセスの見え方の確認

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 19

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

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

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

Hyper-Vコンテナ構築

• Windows10 Pro、2016で利用可能

• Hyper-Vが必要

• 実行されるコンテナはWindowsベース

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 21

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

Hyper-Vコンテナ構築手順

1. Windowsの「コンテナー」機能有効化

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 22

Hyper-Vとコンテナーの両方にチェックをつけて有効化後、

OS再起動

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

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へ

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

Hyper-Vコンテナ構築手順

3. Docker Engineサービスの起動

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 24

「Docker Engine」を右クリックして「開始」

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

DEMO:Hyper-Vコンテナ

1. Windows Nano Serverのイメージ入手

2. Nano Serverのコンテナを起動

3. コンテナプロセスの見え方の確認

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 25

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

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

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

Docker for Windows構築

• Windows10 Pro、2016で利用可能

• Hyper-VやVirtual Boxの仮想化が必要

• 実行されるコンテナはLinuxベース

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 27

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

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再起動

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

DEMO:Docker for Windows

1. Hello Worldコンテナの起動

2. Ubuntu Linuxのコンテナでbashを起動

3. コンテナプロセスの見え方の確認

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 29

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

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

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

まとめ

Section 4

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 31

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

まとめ

• IoT、BigData等で求められるスケーラビリティは現行の「第2のプラットフォーム」では実現が難しい

• 次世代のニーズに対応する「第3のプラットフォーム」実現のための要素技術の一つがコンテナ

• コンテナはOverheadが非常に少ない高効率な基盤を提供可能

• DockerはWindows/Linuxどちらのコンテナも扱うことができる

• コンテナの実装方法は複数存在し、プロセスの分離度が違う

Copyright © 2016 System Center User Group Japan. All Rights Reserved. 32

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

参考資料

• 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

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

Q&A

??Copyright © 2016 System Center

User Group Japan. All Rights Reserved. 34