Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Windowsコンテナ入門
Search
Kyohei Mizumoto
October 25, 2019
Technology
5
2.8k
Windowsコンテナ入門
Slides for a study meeting.
https://ssmjp.connpass.com/event/148726/
Kyohei Mizumoto
October 25, 2019
Tweet
Share
More Decks by Kyohei Mizumoto
See All by Kyohei Mizumoto
クラウドネイティブ環境の脅威モデリング
kyohmizu
2
500
コンテナサプライチェーンセキュリティ
kyohmizu
2
250
サイバーセキュリティの最新動向:脅威と対策
kyohmizu
1
300
コンテナセキュリティの基本と脅威への対策
kyohmizu
4
1.7k
安全な Kubernetes 環境を目指して
kyohmizu
4
1.2k
Unlocking Cloud Native Security
kyohmizu
5
1.4k
コンテナ × セキュリティ × AWS
kyohmizu
11
4k
コンテナセキュリティ
kyohmizu
10
4.2k
コンテナイメージのマルウェア検出とその実用性について
kyohmizu
4
3.8k
Other Decks in Technology
See All in Technology
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
4
810
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
620
Model Mondays S2E02: Model Context Protocol
nitya
0
140
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
130
CSS、JSをHTMLテンプレートにまとめるフロントエンド戦略
d120145
0
160
Amazon Q Developer for GitHubとAmplify Hosting でサクッとデジタル名刺を作ってみた
kmiya84377
0
3.5k
評価の納得感を2段階高める「構造化フィードバック」
aloerina
1
270
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
130
kubellが挑むBPaaSにおける、人とAIエージェントによるサービス開発の最前線と技術展望
kubell_hr
1
360
Azure AI Foundryでマルチエージェントワークフロー
seosoft
0
120
AWS と定理証明 〜ポリシー言語 Cedar 開発の舞台裏〜 #fp_matsuri / FP Matsuri 2025
ytaka23
9
2.6k
Observability infrastructure behind the trillion-messages scale Kafka platform
lycorptech_jp
PRO
0
110
Featured
See All Featured
BBQ
matthewcrist
89
9.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
Music & Morning Musume
bryan
46
6.6k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Balancing Empowerment & Direction
lara
1
320
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.9k
Rails Girls Zürich Keynote
gr2m
94
14k
Transcript
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!