Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Windowsコンテナ入門
Search
Kyohei Mizumoto
October 25, 2019
Technology
3.5k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Windowsコンテナ入門
Slides for a study meeting.
https://ssmjp.connpass.com/event/148726/
Kyohei Mizumoto
October 25, 2019
Transcript
27 slides
Windowsコンテナ⼊⾨
Kyohei Mizumoto(@kyohmizu) C# Software Engineer Interests Docker/Kubernetes Go Security whoami
今⽇話すこと コンテナの基本 Windowsコンテナ概要 デモ(時間があれば)
今⽇のゴール Windowsコンテナを何となく理解する Windowsコンテナを実⾏できるようになる
コンテナの基本
コンテナ︖ 仮想化技術の⼀つ(コンテナ型仮想化) ⇔ 仮想マシン(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コンテナ
Windowsコンテナ 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のノード上で、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
Thank you!
More Decks by Kyohei Mizumoto
See All by Kyohei Mizumoto
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
1.4k
最新の脅威動向から考える、コンテナサプライチェーンのリスクと対策
kyohmizu
1
1.1k
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
10
4.5k
Black Hat USA 2025 Recap ~ クラウドセキュリティ編 ~
kyohmizu
0
1k
CTFのためのKubernetes入門
kyohmizu
3
1.3k
クラウドネイティブ環境の脅威モデリング
kyohmizu
3
890
コンテナサプライチェーンセキュリティ
kyohmizu
2
580
サイバーセキュリティの最新動向:脅威と対策
kyohmizu
1
500
コンテナセキュリティの基本と脅威への対策
kyohmizu
4
2.4k
Other Decks in Technology
See All in Technology
自治体AIコンタクトセンター、何をどこに任せる?~Amazon Connect Customer +Amazon Bedrockの実践知~ / 20261107 Satoshi Torano
shift_evolve
PRO
1
130
Sizing, Benchmarking and Performance Tuning Apache Flink Clusters
rmetzger
0
150
【Oracle AI SPOTLIGHT ウェビナー】【特別開催:日本語で解説!】Oracle AI World 2026 最新情報フィードバック
oracle4engineer
PRO
1
180
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
800
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
660
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
140
高品質と高スピードを支える品質のシフトレフトのアプローチ
goyoki
2
400
複数システムが同居した 15 年物の AWS アカウントを解体するための考古学
wa6sn
3
130
AWS基盤改善を支える 私たちの理念と行動指針
kentosuzuki
0
180
Frontier Teams — Amazon は AI で「開発のやり方」をどう変えたのか
kmotohas
0
200
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
140
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
Featured
See All Featured
The Language of Interfaces
destraynor
162
27k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.4k
We Are The Robots
honzajavorek
0
440
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
4
1.2k
Practical Orchestrator
shlominoach
192
12k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
520
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k