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.9k
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
CTFのためのKubernetes入門
kyohmizu
2
900
クラウドネイティブ環境の脅威モデリング
kyohmizu
2
650
コンテナサプライチェーンセキュリティ
kyohmizu
2
340
サイバーセキュリティの最新動向:脅威と対策
kyohmizu
1
340
コンテナセキュリティの基本と脅威への対策
kyohmizu
4
1.9k
安全な Kubernetes 環境を目指して
kyohmizu
4
1.2k
Unlocking Cloud Native Security
kyohmizu
5
1.4k
コンテナ × セキュリティ × AWS
kyohmizu
11
4.1k
コンテナセキュリティ
kyohmizu
10
4.4k
Other Decks in Technology
See All in Technology
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
190
QAEが生成AIと越える、ソフトウェア開発の境界線
rinchsan
0
150
어떤 개발자가 되고 싶은가?
arawn
1
440
プロダクトエンジニアとしてのマインドセットの育み方 / How to improve product engineer mindset
saka2jp
1
180
GPUをつかってベクトル検索を扱う手法のお話し~NVIDIA cuVSとCAGRA~
fshuhe
0
380
AI連携の新常識! 話題のMCPをはじめて学ぶ!
makoakiba
0
180
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
4
700
AIエージェントを導入する [ 社内ナレッジ活用編 ] / Implement AI agents
glidenote
1
210
AIとの協業で実現!レガシーコードをKotlinらしく生まれ変わらせる実践ガイド
zozotech
PRO
2
340
書籍『実践 Apache Iceberg』の歩き方
ishikawa_satoru
0
480
AI時代の発信活動 ~技術者として認知してもらうための発信法~ / 20251028 Masaki Okuda
shift_evolve
PRO
1
140
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
160
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
186
22k
Fireside Chat
paigeccino
41
3.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Documentation Writing (for coders)
carmenintech
76
5.1k
Balancing Empowerment & Direction
lara
5
710
How to train your dragon (web standard)
notwaldorf
97
6.3k
Typedesign – Prime Four
hannesfritz
42
2.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
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!