windows...

30
Windows コンテナ 始動 Powered by MVPs 1 GMOインターネット株式会社 樋口 勝一 InvokeV 代表) Cloud and Datacenter Management

Upload: others

Post on 14-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

Windows コンテナ始動

Powered by MVPs

1

GMOインターネット株式会社 樋口 勝一(InvokeV 代表)

Cloud and Datacenter Management

Page 2: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

本日のメニュー

Windows Server 2016 Technical Preview 3でWindowsコンテナが使えるようになりました。

(昨日のTP4で、あわててアップデート。)

そこで・・・

• コンテナの仕組みや、メリット、デメリットなどを探っていきます。

• コンテナの操作について現時点で出来ること。

• コンテナ技術がもたらすものについての考察。

• コンテナ デモ etc.

Page 3: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナとは?

• コンテナとは

“Basically, a container is an isolated place where an application can run without affecting the rest of the system and without the system affecting the application. Containers are the next evolution in virtualization.“

“Windows Containers についての詳細” より(https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/about_overview)

「コンテナは、アプリケーションがシステムの他の部分に影響を与えることなく、また、アプリケーションに影響を与えるようなシステム無しで実行することができる独立した領域です。コンテナは仮想化の次の進化です。」

Page 4: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

Windows Containers

• Windows Containers

• Windows Server Containers

• Hyper-V Containers

Page 5: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

Windows コンテナ を構成するもの

• コンテナホスト• コンテナが稼働できるように構成された、物理コンピューター又は、仮想化マシン• OSはWindows Server 2016 TP4

• サンドボックス• テンプレートから作成されたコンテナの変更分を保存• アプリケーションのインストール分、レジストリ、ファイルの差分

• レポジトリ• カスタマイズしたコンテナからコンテナイメージを作成して、レポジトリに保管が可能• 保管したコンテナイメージから、コンテナを作成することで再利用が可能

• コンテナ管理ツール• PowerShell• Dockerコマンド• WMI• リモートデスクトップ

Page 6: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

Windows コンテナ を構成するもの

• コンテナイメージ• コンテナのテンプレートとなるもの• ユーザーがカスタマイズしたコンテナを元に、新たにコンテナイメージを作成することができる

• コンテナOSイメージ• 全てのコンテナの元イメージとなるもの• 既定では “WindowsServerCore” “NanoServer”

• 注意• コンテナの親となるコンテナイメージが削除されてしまうと、コンテナは使えなくなる

• 一度作ったコンテナイメージは修正不可• チェックポイントのようなもの• 現時点ではコンテナイメージの結合はできない(Marge Join)

Page 7: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナイメージ と コンテナ

• コンテナOSイメージからコンテナを作成

• IISをインストールしてコンテナをカスタマイズ

• カスタマイズされたコンテナを元に新たにコンテナイメージを作成

Page 8: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナの再利用

•作成したコンテナはコンテナイメージとして保存して、再利用が可能

Page 9: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナのイメージ(主観)

Hello!

Page 10: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

仮想マシンと異なる点

•仮想マシン• 仮想化され割り当てられたハードウェア、OSは全て占有

• コンテナ• 割り当てられた仮想CPU、メモリ、ネットワークは占有

• HDDは親のコンテナイメージとの差分ファイル(小容量)

• OS、アプリケーションなど共通部分は親のコンテナイメージを参照

• 仮想マシンに比べ構築、展開、起動が速い

• 作り直しが簡単

Page 11: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナのメリット・デメリット

• メリット• コンテナごとにOSカーネルが読み込まれるわけではないので、仮想マシンに比べて必要とするメモリ、 CPU, HDDリソースが少ない

• コンテナ自体は小さい差分ファイルなので、構築、展開などが早い

• 起動時の読み込みが小さいので、起動が速い

• OSのインストールなどが不要で、必要な変更部分のみ構築すればOK

• サーバー管理者の手を借りずにアプリケーション開発者自身が、配置する、テストする、公開する、破棄するといった一連のオペレーションに要する時間と手間が格段に小さくなる

• デメリット• 親コンテナに依存するため、コンテナが派生し続けると依存関係が複雑になる

• 利用できるOSは現時点ではWindowsServerCoreのみ

• 親コンテナイメージのセキュリティー脆弱性や問題点が、依存しているすべてのコンテナに影響する

• 既存の仮想マシンベースのシステムに代わるべき明確な理由がない

Page 12: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナ技術の効用

• サーバー管理者• OSのインストールや、機能の追加など面倒な作業が軽減される

• サービス提供や更新のためのプロセスが削減される

•開発者• 開発者自身が、「作る、配置する、テストする、公開する、破棄する」といった一連のオペレーションを行うことが可能

• オペレーションに要する時間が、格段に短くなる

• クラウドサービスに適したマイクロサービスとして、アプリケーションを開発することが可能

• コード修正無しにアプリケーションを様々なプラットフォームで実行可能• パブリッククラウド プライベートクラウド デスクトップ ノートPC etc.

• サービス提供者• 新サービス提供の可能性

• 既存PaaSの新たなプラットフォーム

Page 13: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナホストの構築

• Microsoft Azure• 仮想マシンイメージとして Windows Server Container Preview

• リモートデスクトップで接続

• コンテナホスト仮想マシンをダウンロード• Hyper-V上にスクリプトで仮想マシンを自動作成

• 参考: https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/container_setup

• TP4をダウンロードしてインストール(物理マシン&仮想マシン GUI可)• スクリプトをダウンロード&実行(役割と機能の追加 NG)

• コンテナサービスの有効化とコンテナOSイメージのダウンロード

wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFileC:¥Install-ContainerHost.ps1

C:¥Install-ContainerHost.ps1 (-HyperV)

Page 14: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• コンテナ関連のコマンドの確認

• コンテナイメージの確認

• C:¥ProgramData¥Microsoft¥Windows¥Images• C:¥ProgramData¥Microsoft¥Windows¥Hyper-V¥Container Image Store

• コンテナの確認

• C:¥ProgramData¥Microsoft¥Windows¥Hyper-V¥Containers

Get-Command -Module Containers

Get-ContainerImage

Name Publisher Version IsOSImage---- --------- ------- ---------NanoServer CN=Microsoft 10.0.10586.0 TrueWindowsServerCore CN=Microsoft 10.0.10586.0 True

Get-Container

Page 15: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• コンテナの作成

• コンテナの起動

• コンテナの停止

• コンテナの削除

• 削除する場合はコンテナはオブジェクトで指定

• 同一名の場合はIDで指定

Start-Container -Name "MyContainer"

Start-Container -Name "MyContainer"

New-Container -Name "MyContainer" -ContainerImageName"WindowsServerCore" -SwitchName "Virtual Switch"

Get-Container -Name "MyContainer" | Remove-Container –Force

Page 16: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• コンテナイメージの作成

-Publisher:コンテナイメージの作成者の名前-Name:コンテナイメージ名-Version:任意のバージョン

• 既存コンテナからコンテナイメージを作成

New-ContainerImage -ContainerName “MyContainer” -Publisher “WIN1” -Name “MyContainerImage” -Version 1.0.0.0

Get-ContainerImage

Name Publisher Version IsOSImage---- --------- ------- ---------WindowsServerCore CN=Microsoft 10.0.10514.0 True MyContainerImage CN=WIN1 1.0.0.0 False

Page 17: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• コンテナイメージのエクスポート

• コンテナイメージのインポート

• コンテナイメージの削除

• 削除するコンテナイメージはオブジェクトで指定

• 同一名の場合はIDで指定

Get-ContainerImage -Name "MyContainerImage" | Export-ContainerImage -Path "C:¥"

Import-ContainerImage -Path "C:¥CN=WIN1_ MyContainerImage_1.0.0.0.APPX"

Get-ContainerImage -Name “MyContainerImage”| Remove-ContainerImage –Force

Page 18: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• Enter-PSSession

• コンテナにPowerShellのセッションが張られると[ContainerName]:PS C:¥Windows¥system32>のようなプロンプトとなる以後のコマンドはコンテナ内のローカルで実行されることになる

• Invoke-Command

• コンテナ内で実行したいコマンドを-ScriptBlock { }で指定する

$Container = Get-Container -Name "MyContainer”

Enter-PSSession -ContainerId $Container.ContainerId –RunAsAdministrator

[MyContainer]: PS C:¥Windows¥system32>

$Container = Get-Container -Name "MyContainer“

Invoke-Command -ContainerId $Container.ContainerId -ScriptBlock {ipconfig}

Page 19: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

PowerShell によるコンテナの操作

• その他

• Add-ContainerNetworkAdapter

• Add-ContainerSharedFolder

• Set-ContainerMemory

• Set-ContainerProcessor

• Test-ContainerImage ?

• etc.

Page 20: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

リモートデスクトップ によるコンテナの操作

• リモートデスクトップ(TP3)• リモートデスクトップを有効にする(リモートのPowerShellから設定)

[MyContainer]: PS C:¥Windows¥system32> net user Administrator P@ssword

[MyContainer]: PS C:¥Windows¥system32> net user administrator /active:yes

Page 21: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

サーバーマネージャーによるコンテナの操作

•今のところNG

• コンテナホストを透過してコンテナは作られているため、マシン名がコンテナホストとコンテナと同じ

• GUIツールでのリモート管理は今後要調査

Page 22: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

IISコンテナイメージの作成(TP4 英語版)

• コンテナの作成~起動

• セッション接続

• IISのインストール(※TP4の日本語版ではWebサーバーの追加がエラーとなるので英語版で実行する)

$Container = New-Container -Name "IIS Container" -ContainerImageName“WindowsServerCore” -SwitchName "Virtual Switch“

Start-Container $Container

Install-WindowsFeature web-server

Enter-PSSession -ContainerId $Container.ContainerId –RunAsAdministrator

Page 23: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

IISコンテナイメージの作成

• PowerShellのセッションの接続を閉じる~コンテナを停止

• IISコンテナを元に、コンテナイメージを作成

• コンテナイメージを確認

Exit

Stop-Container $Container

New-ContainerImage -ContainerName $Container.Name -Publisher "WIN1" -Name "IISContainerImage" -Version 1.0

Get-ContainerImage

Name Publisher Version IsOSImage---- --------- ------- ---------WindowsServerCore CN=Microsoft 10.0.10514.0 True IISContainerImage CN=WIN1 1.0.0.0 False MyContainerImage CN=WIN1 1.0.0.0 False

Page 24: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

IISコンテナの公開

• コンテナはコンテナホストとNATを使って接続• コンテナホストIP:172.16.0.1• コンテナIP:172.168.0.2~

• NATの設定

-NatName:NAT名-Protocol:HTTPの公開なのでTCP-ExternalIPAddress:0.0.0.0-InternalIPAddress:IISコンテナのIPアドレス-InternalPort:コンテナのWebサイトのポート番号-ExternalPort:公開するポート番号

Add-NetNatStaticMapping-NatName "ContainerNAT" -Protocol TCP -ExternalIPAddress 0.0.0.0 -InternalIPAddress 172.16.0.2 -InternalPort 80 -ExternalPort 80

Page 25: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

IISコンテナの公開

• コンテナホストのファイヤーウォールでTCP80番を開く• GUIの「Windowsファイアウォール」でも設定可

• NATの接続状況

if (!(Get-NetFirewallRule | where {$_.Name -eq "TCP80"})) {New-NetFirewallRule -Name "TCP80" -DisplayName "HTTP on TCP/80" -Protocol tcp -LocalPort 80 -Action Allow -Enabled True}

Get-NetNatSession

NatName : ContainerNATInternalRoutingDomainId : {b1062982-2b18-4b4f-b3d5-a78ddb9cdd49}CreationTime : 2015/11/09 21:21:54Protocol : 6InternalSourceAddress : 172.16.0.2InternalSourcePort : 80InternalDestinationAddress : 61.10.108.3InternalDestinationPort : 38350ExternalSourceAddress : 210.172.132.1ExternalSourcePort : 80ExternalDestinationAddress : 61.10.108.3ExternalDestinationPort : 38350

Page 26: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

IISコンテナの公開

Page 27: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

コンテナ技術がもたらすもの

• ハイブリッドクラウドを促進• より小さく、アプリケーションのプラットフォームを選ばないコンテナであれば、プライベートクラウドとパブリッククラウドを短時間で簡単に行き来できる

•開発者と運用者が連携してアプリケーション開発を行う「DevOps」の足掛かり

• アプリケーションの開発、展開にともなう効率アップ、ストレス削減

• マイクロサービス化によって、短いサイクルでのアプリケーションのアップデート

• OS領域を保護することで、より安定したサービスの提供

•新たなPaaSのプラットフォーム

• サービス提供者にとって、より低コストのWebホスティングが提供可能

• OSに影響を与えないコンテナベースによるアプリケーションの配布

• コンテナイメージを提供する新たなサービス

Page 28: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

DEMO

Page 29: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

予告

• InvokeV & Tech Fielders 共催 Container 勉強会

• 2015年12月1日 18:00 ~ 20:00

• https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032695195&Culture=ja-JP&community=0

• Windows Server Container の今を知る- Windows Server Container 概説 (高添) 15分- PowerShell で Container 操作 (樋口) 30分- WMI で Container 操作 (樋口) 30分- Docker Command で Container 操作 (高添) 20分- もし間に合えば Hyper-V Container (高添) 20分- Q&A

• InvokeVnaらではのWindows Server Container の開発手法や、コンテナ裏話もあります

Page 30: Windows コンテナ始動download.microsoft.com/download/6/B/D/6BD94BB9-D385-495B...本日のメニュー Windows Server 2016 Technical Preview 3でWindowsコンテナが使え るようになりました。(昨日のTP4で、あわててアップデート。そこで・・・

出展とリンク

• Windows Server 2016 Technical Preview 4https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview

• Windows Containershttps://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome

• Preparing a physical machine or an existing virtual machine for Windows Containershttps://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/inplace_setup

• InvokeV(Facebook)https://www.facebook.com/groups/749187091776055/