狠狠撸

狠狠撸Share a Scribd company logo
奥颈苍诲辞飞蝉コンテナ??
Kyohei Mizumoto(@kyohmizu)
C# Software Engineer
Interests
Docker/Kubernetes
Go
Security
whoami
今?話すこと
コンテナの基本
奥颈苍诲辞飞蝉コンテナ概要
デモ(時間があれば)
今?のゴール
奥颈苍诲辞飞蝉コンテナを何となく理解する
奥颈苍诲辞飞蝉コンテナを実?できるようになる
コンテナの基本
コンテナ?
仮想化技術の?つ(コンテナ型仮想化)
? 仮想マシン(VM)
1つのホスト上に複数の分離空間(=コンテナ)を作成
ホストのプロセスとして動作
それぞれのコンテナでは異なるOSを実?可能
ホストOSのカーネルを共有
Dockerコンテナが主流
仮想マシン コンテナ
https://docs.microsoft.com/ja-jp/dotnet/architecture/microservices/container-docker-
introduction/docker-defined
コンテナの特徴
仮想マシンとの相違
軽量(オーバーヘッドが少ない)
起動が?速
分離レベルはあまり?くない
セキュリティリスクに注意
→ Rootlessコンテナの利?
→ gVisorによるサンドボックス化
コンテナを?える技術
namespace
プロセスID、ユーザ、ファイルシステム等を分離
コンテナからホストのプロセス、ユーザは?えない
cgroups
CPU、メモリ等のマシンリソースを分離
リソースの使?量を制限
Windowsでのコンテナ利?
Docker Desktop for Windows
仮想マシン上でコンテナ実?を実?
Hyper-Vを使?
https://docs.docker.com/docker-for-windows/
Docker Toolbox(?推奨)
レガシーなDockerデスクトッププログラム
Oracle VM VirtualBoxを使?
https://docs.docker.com/toolbox/
奥颈苍诲辞飞蝉コンテナ
奥颈苍诲辞飞蝉コンテナ
Windows Serverを実?するコンテナ
Docker Desktop for Windowsで実?
Docker Toolboxでは実?不可
2つの分離モード
プロセス分離(Process Isolation)
Hyper-V分離(Hyper-V Isolation)
ベースイメージ
Windows Server Core
従来の .NET frameworkアプリケーション?
Nano Server
.NET Coreアプリケーション?
Windows
Windows APIのフルセット
Windows IoT Core
IoTアプリケーション?
※イメージは Docker Hub から取得可能
コンテナホストの要件
Windows Server 2016、Windows Server 2019、
Windows 10 Professional または Enterprise
コンテナ機能が有効になっている
Hyper-Vの機能が有効になっている(Hyper-V分離)
OSが「C:」にインストールされいている(プロセス分離)
BIOSで仮想化が有効になっている
ホストOSがHyper-V仮想マシンの場合、nested
virtualization の有効化が必要
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/deploy-
containers/system-requirements
分離モード
2つの分離モード
プロセス分離(Process Isolation)
Hyper-V分離(Hyper-V Isolation)
使?するイメージは共通
実?時のオプション(--isolation)で選択する
既定値(オプションなしで実?した場合)
Windows Serverではプロセス分離
Windows 10ではHyper-V分離
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/manage-
containers/hyperv-container
プロセス分離
ホストOS上のプロセスとしてコンテナを実?
ホストOSとカーネルを共有
ホストOSと同じバージョンのみ実?可能
起動が早く、オーバーヘッドが少ない
開発、テスト?
プロセス分離
Windowsのコンテナ機能を使?
ホストの実?プロセス
CExecSvc.exe(コンテナ実?エージェント)
1コンテナ当たりCExecSvcが1つ起動
ホストからコンテナ内の実?プロセスを確認できる
Hyper-V分離
Hyper-Vの仮想マシン上でコンテナを実?
ホストOSとカーネルを共有しない
ホストOSと同じか、古いバージョンのみ実?可能
Hyper-Vマネージャーでは確認できない
分離レベルが?い
Hyper-V分離
Hyper-Vの機能を使?
ホストの実?プロセス
vmwp.exe(仮想マシンワーカー)
vmmem.exe(メモリ、CPUをコンテナ?に仮想化)
1コンテナ当たりvmwp、vmmemが1つずつ起動
サポート?に1つのvmwp、2つのvmmemが常駐
ホストからコンテナ内の実?プロセスを確認できない
コンテナの実?
プロセス分離
docker run -it --isolation=process `
mcr.microsoft.com/windows/servercore:ltsc2019 cmd
Hyper-V分離
docker run -it --isolation=hyperv `
mcr.microsoft.com/windows/servercore:ltsc2019 cmd
デモ
Azure VMでの利?
VMサイズはv3を指定する
Nested Virtualizationを有効にするため
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nested-virtualization
https://azure.microsoft.com/de-de/blog/introducing-the-new-dv3-and-ev3-vm-sizes/
Azure Container Instanceでの利?
Kubernetesでの利?
Windowsのノード上で、奥颈苍诲辞飞蝉コンテナを利?可能
https://kubernetes.io/docs/setup/production-environment/windows/intro-windows-in-kubernetes/
Azure Kubernetes Serviceでの利?
コンソール(Azure Cloud Shellなど)を使?
1. プレビューの拡張機能(aks-preview)をインストール
2. AKSクラスタを作成
Windows?に管理ユーザー名とパスワードを指定
3. Windows Serverのノードプールを追加
4. kubernetesリソースを作成
nodeSelectorに "beta.kubernetes.io/os": windows を設定
https://docs.microsoft.com/en-us/azure/aks/windows-container-cli
参考
Microsoftドキュメント(翻訳に難あり)
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/
DockerHub - Docker Desktop for Windows
https://hub.docker.com/editions/community/docker-ce-desktop-windows
@ITの記事
https://www.atmarkit.co.jp/ait/articles/1902/07/news024.html
Docker実践ガイド第2版
https://book.impress.co.jp/books/1118101052
宣伝
https://cloudnativedays.jp/cndk2019/
https://twitter.com/cloudnativedays/status/1186154959517044736
ありがとうございました

More Related Content

奥颈苍诲辞飞蝉コンテナ入门