SlideShare a Scribd company logo
1 of 18
Download to read offline
第10回 コンテナ型仮想化の情報交換会@東京
1
コンテナ on Windows
アジェンダ
• コンテナ?Docker?
• Windows のコンテナ
• 動かしてみよう
• Deep Dive
2
!!! この内容はあくまでも個人的な検証とそこから得られる見解です !!!
コンテナ?Docker?
3
ハイパーバイザー と コンテナの違い
引用元:http://ascii.jp/elem/000/000/419/419268/#eid419270
• ハイパーバイザー上で動作
• ホストOSとカーネルは共有しない
ハイパーバイザー コンテナ
• ハイパーバイザーが不要
• ホストOSとカーネルを共有
Solaris コンテナ - Solaris 10, Jail - FreeBSD, LXC - Linux
コンテナ型の仮想化実装例
コンテナ?Docker?
• メリット
• 軽量
• ハイパーバイザー型に比べ性能を向上させやすい
• デメリット
• カーネルを共有
• ノイジーネイバー(近隣の影響)を受けやすい
• 別のOSが使用できない
• 使用場面
• アプリケーション開発
• Infrastructure as a Code/Immutable Infrastructure
• いわゆるDevOps
4
一般的なコンテナのメリット
参考 :日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法!
https://channel9.msdn.com/Events/de-code/2016/DOO-014
コンテナ?Docker?
• ポータブル
• アプリケーションを実行環境ごとパッケージング
• リポジトリの存在
• パッケージを登録。再利用が可能
• バージョン管理システムとの親和性
• OS/アプリケーション のデプロイをコードで管理
5
Docker のメリット
参考 : Docker 最新動向と Azure Container Service 入門
https://channel9.msdn.com/Events/de-code/2016/DOO-013
Windows のコンテナ
• Windows Server 2016 or Windows 10
• Hyper-V の役割 が必要(Hyper-V コンテナ)
• Linux コンテナは動かない
• Docker for Windows とはまた別
• 2種類のベース OS イメージ
• windowsservercore
• nanoserver
• Azure/AWS でも動かせる!!
6
概要
ホスト OS Windows Server コンテナー Hyper-V コンテナー
Windows Server 2016 フル UI Server Core イメージ Nano Server イメージ
Windows Server 2016 Core Server Core イメージ Nano Server イメージ
Windows Server 2016 Nano Nano Server イメージ Nano Server イメージ
Windows 10 Insider Releases 利用不可 Nano Server イメージ
参考 :これが噂の Nano Server ~期待に応えるために小さくなった次期サーバー OS~
https://channel9.msdn.com/Events/de-code/decode-2015/CDP-016
Hardware
Windows のコンテナ
• Windows Server コンテナー
• コンテナ間でカーネルを共有
• 隔離性が低い
7
2つの実装
カーネル
管理OS
プロセス
コンテナ
Docker
Engine
Hardware
カーネル
管理OS
プロセス
コンテナ
Docker
Engine
カーネル
Hyper-V
プロセス
コンテナ
カーネル
Hyper-V
プロセス
コンテナ
• Hyper-V コンテナー
• コンテナ間は別カーネル
• 隔離性が高い
同一管理組織(企業・部署等)での使用を想定
異なる管理組織での使用を想定
Nested Hyper-V
• Hyper-V の中で動く Hyper-V
• Hyper-V コンテナ を Hyper-V 上で動かす場合に使用
8
9
Windows のコンテナ
• docker コマンド
• PowerShell は...?
• PowerShell For Docker
• https://msdn.microsoft.com/en-
us/virtualization/windowscontainers/management/d
ocker-powershell
10
管理
Through our conversations with you, our users though forums, over Twitter, in GitHub, and even in person one question has
come up more than any other – why can’t I see Docker containers from PowerShell?
As we’ve discussed the pro’s, con’s and various options with you we’ve come to the conclusion that the container PowerShell
module needed an update… So we are deprecating the container PowerShell module that has been shipping in the preview
builds of Windows Server 2016 and have begun work replacing it with a new PowerShell module for Docker. While the
development of this new module is already underway but with a different approach than in the past – we’re doing the work in
the open. Our goal for this module is that it will be a community collaboration that results in a great PowerShell experience for
containers though the Docker engine. This new module builds directly on top of the Docker Engine’s REST interface enabling
user choice between the Docker CLI, PowerShell or both.
_人人人人人_
> 開発中 <
 ̄Y^Y^Y^Y^Y^ ̄
Windows のコンテナ
• docker 1.12 が使用可能
11
管理 : docker コマンド
コマンド アクション PowerShell
docker images イメージのリスト Get-ContainerImage
docker search Docker Hub の検索 N/A
docker pull イメージのダウンロード Pull-ContainerImage
docker run コンテナーの作成・起動 Run-ContainerImage
docker start コンテナの開始 Start-Container
docker stop コンテナの停止 Stop-Container
docker ps 実行中のコンテナの確認 Get-Container
docker rm コンテナの削除 Remove-Container
PS C:¥> docker -v
Docker version 1.12.2-cs2-ws-beta, build 050b611
開発中
https://github.com/Microsoft/Docker-PowerShell
動かしてみよう
• Windows Server の Windows コンテナー
• https://msdn.microsoft.com/ja-
jp/virtualization/windowscontainers/quick_start/quic
k_start_windows_server
12
Windows Server コンテナー
イメージの一覧
PS C:¥> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microsoft/sample-dotnet latest c14528829a37 3 days ago 911 MB
microsoft/iis latest b6a44de60ef9 2 weeks ago 8.96 GB
microsoft/windowsservercore latest 93a9c37b36d0 5 weeks ago 8.68 GB
microsoft/nanoserver latest e14bc0ecea12 5 weeks ago 810 MB
コンテナの起動
PS C:¥> docker run -d -p 80:80 microsoft/iis:latest
83f7f70c8b54d94511c3d065be3891271b04e64bc274b779d15dac538882ba43
起動しているコンテナの確認
PS C:¥> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
2544f4bf9a37 microsoft/iis:latest "C:¥¥ServiceMonitor..." 2 minutes ago Up 2 minutes 0.0.0.0:80-
>80/tcp elastic_curran
動かしてみよう
13
Windows Server コンテナー
コンテナの削除
PS C:¥> docker rm -f 83f7f70c8b54
83f7f70c8b54
対話形式での起動
PS C:¥> docker run -it microsoft/windowsservercore:latest powershell
デタッチ
C-p C-q
アタッチ
PS C:¥> docker attach e51b407b00cb
動かしてみよう
• Hyper-V コンテナー
• https://msdn.microsoft.com/ja-
jp/virtualization/windowscontainers/management/hy
perv_container
14
Hyper-V コンテナー
対話形式での起動
PS C:¥> docker run -it --isolation=hyperv microsoft/nanoserver:latest powershell
起動しているコンテナの確認
PS C:¥> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
d4991551c5d2 microsoft/nanoserver:latest "powershell" 8 seconds ago Up 5 seconds
evil_noyce
Deep Dive
15
関係するプロセス(Windows Server コンテナー)
カーネル
コンテナー エンジン
vmcompute.exe
wininit.exe
コンテナ
Docker エンジン
dockerd.exe
CExecSvc.exe
PowerShell.exe
image
Docker クライアント
docker.exe
sandbox
<ベース OS イメージ/コンテナーサンドボックス格納フォルダ>
C:¥ProgramData¥docker¥windowsfilter
<コンテナー 構成情報・ログ>
C:¥ProgramData¥docker¥containers
<構成ファイル>
C:¥ProgramData¥docker¥containers¥
<コンテナID>
16
Process Explorer
ディスクの管理
wininit.exe
wininit.exe
• Windows Server and Docker
• http://www.slideshare.net/Docker/windows-server-
and-docker-the-internals-behind-bringing-docker-
and-containers-to-windows-by-taylor-brown-and-
john-starks
• Windows Container Networking
• https://blogs.technet.microsoft.com/virtualization/20
16/05/05/windows-container-networking/
17
まとめ
18
Microsoft 製品、結構使えます
正しい理解と踏み出す勇気で選択肢を増やしましょう!
• コンテナ?Docker?
• Windows のコンテナ
• 動かしてみよう
• Deep Dive

More Related Content

What's hot

Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
Kazuyuki Mori
 

What's hot (20)

Dockerについて
DockerについてDockerについて
Dockerについて
 
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
 
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオンJAWS-UG コンテナ支部 Docker入門 10分ハンズオン
JAWS-UG コンテナ支部 Docker入門 10分ハンズオン
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
Docker地雷n本勝負
Docker地雷n本勝負Docker地雷n本勝負
Docker地雷n本勝負
 
JAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオンJAWS-UG コンテナ支部 Docker入門 ハンズオン
JAWS-UG コンテナ支部 Docker入門 ハンズオン
 
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応までDocker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
 
Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較Docker swarm mode 入門と ECS との比較
Docker swarm mode 入門と ECS との比較
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~清貧Docker ~個人がDockerを使う理由~
清貧Docker ~個人がDockerを使う理由~
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
Jenkins with Docker
Jenkins with DockerJenkins with Docker
Jenkins with Docker
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編Dockerのキホンその2 Docker Compose Swarm Machine 利用編
Dockerのキホンその2 Docker Compose Swarm Machine 利用編
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 

Similar to コンテナ on Windows

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Masahiro Nagano
 

Similar to コンテナ on Windows (20)

Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
Docker入門
Docker入門Docker入門
Docker入門
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
ゆるふわなDockerの使い方
ゆるふわなDockerの使い方ゆるふわなDockerの使い方
ゆるふわなDockerの使い方
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
Dockerでデプロイ
DockerでデプロイDockerでデプロイ
Dockerでデプロイ
 
自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker自作アプリをデプロイしてみた with Docker
自作アプリをデプロイしてみた with Docker
 
Docker 入門
Docker 入門Docker 入門
Docker 入門
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解
 
Kubernetesを触ってみた
Kubernetesを触ってみたKubernetesを触ってみた
Kubernetesを触ってみた
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3Docker, Kubernetes and OpenShift v3
Docker, Kubernetes and OpenShift v3
 
Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月Docker事始めと最新動向 2015年6月
Docker事始めと最新動向 2015年6月
 
Webアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオンWebアプリケーション開発者のためのDockerハンズオン
Webアプリケーション開発者のためのDockerハンズオン
 
Dockerでlamp環境を作って見る
Dockerでlamp環境を作って見るDockerでlamp環境を作って見る
Dockerでlamp環境を作って見る
 

コンテナ on Windows

  • 2. アジェンダ • コンテナ?Docker? • Windows のコンテナ • 動かしてみよう • Deep Dive 2 !!! この内容はあくまでも個人的な検証とそこから得られる見解です !!!
  • 3. コンテナ?Docker? 3 ハイパーバイザー と コンテナの違い 引用元:http://ascii.jp/elem/000/000/419/419268/#eid419270 • ハイパーバイザー上で動作 • ホストOSとカーネルは共有しない ハイパーバイザー コンテナ • ハイパーバイザーが不要 • ホストOSとカーネルを共有 Solaris コンテナ - Solaris 10, Jail - FreeBSD, LXC - Linux コンテナ型の仮想化実装例
  • 4. コンテナ?Docker? • メリット • 軽量 • ハイパーバイザー型に比べ性能を向上させやすい • デメリット • カーネルを共有 • ノイジーネイバー(近隣の影響)を受けやすい • 別のOSが使用できない • 使用場面 • アプリケーション開発 • Infrastructure as a Code/Immutable Infrastructure • いわゆるDevOps 4 一般的なコンテナのメリット 参考 :日本でもできる! マイクロソフト技術をフル活用した DevOps の具体的実現手法! https://channel9.msdn.com/Events/de-code/2016/DOO-014
  • 5. コンテナ?Docker? • ポータブル • アプリケーションを実行環境ごとパッケージング • リポジトリの存在 • パッケージを登録。再利用が可能 • バージョン管理システムとの親和性 • OS/アプリケーション のデプロイをコードで管理 5 Docker のメリット 参考 : Docker 最新動向と Azure Container Service 入門 https://channel9.msdn.com/Events/de-code/2016/DOO-013
  • 6. Windows のコンテナ • Windows Server 2016 or Windows 10 • Hyper-V の役割 が必要(Hyper-V コンテナ) • Linux コンテナは動かない • Docker for Windows とはまた別 • 2種類のベース OS イメージ • windowsservercore • nanoserver • Azure/AWS でも動かせる!! 6 概要 ホスト OS Windows Server コンテナー Hyper-V コンテナー Windows Server 2016 フル UI Server Core イメージ Nano Server イメージ Windows Server 2016 Core Server Core イメージ Nano Server イメージ Windows Server 2016 Nano Nano Server イメージ Nano Server イメージ Windows 10 Insider Releases 利用不可 Nano Server イメージ 参考 :これが噂の Nano Server ~期待に応えるために小さくなった次期サーバー OS~ https://channel9.msdn.com/Events/de-code/decode-2015/CDP-016
  • 7. Hardware Windows のコンテナ • Windows Server コンテナー • コンテナ間でカーネルを共有 • 隔離性が低い 7 2つの実装 カーネル 管理OS プロセス コンテナ Docker Engine Hardware カーネル 管理OS プロセス コンテナ Docker Engine カーネル Hyper-V プロセス コンテナ カーネル Hyper-V プロセス コンテナ • Hyper-V コンテナー • コンテナ間は別カーネル • 隔離性が高い 同一管理組織(企業・部署等)での使用を想定 異なる管理組織での使用を想定
  • 8. Nested Hyper-V • Hyper-V の中で動く Hyper-V • Hyper-V コンテナ を Hyper-V 上で動かす場合に使用 8
  • 9. 9
  • 10. Windows のコンテナ • docker コマンド • PowerShell は...? • PowerShell For Docker • https://msdn.microsoft.com/en- us/virtualization/windowscontainers/management/d ocker-powershell 10 管理 Through our conversations with you, our users though forums, over Twitter, in GitHub, and even in person one question has come up more than any other – why can’t I see Docker containers from PowerShell? As we’ve discussed the pro’s, con’s and various options with you we’ve come to the conclusion that the container PowerShell module needed an update… So we are deprecating the container PowerShell module that has been shipping in the preview builds of Windows Server 2016 and have begun work replacing it with a new PowerShell module for Docker. While the development of this new module is already underway but with a different approach than in the past – we’re doing the work in the open. Our goal for this module is that it will be a community collaboration that results in a great PowerShell experience for containers though the Docker engine. This new module builds directly on top of the Docker Engine’s REST interface enabling user choice between the Docker CLI, PowerShell or both. _人人人人人_ > 開発中 <  ̄Y^Y^Y^Y^Y^ ̄
  • 11. Windows のコンテナ • docker 1.12 が使用可能 11 管理 : docker コマンド コマンド アクション PowerShell docker images イメージのリスト Get-ContainerImage docker search Docker Hub の検索 N/A docker pull イメージのダウンロード Pull-ContainerImage docker run コンテナーの作成・起動 Run-ContainerImage docker start コンテナの開始 Start-Container docker stop コンテナの停止 Stop-Container docker ps 実行中のコンテナの確認 Get-Container docker rm コンテナの削除 Remove-Container PS C:¥> docker -v Docker version 1.12.2-cs2-ws-beta, build 050b611 開発中 https://github.com/Microsoft/Docker-PowerShell
  • 12. 動かしてみよう • Windows Server の Windows コンテナー • https://msdn.microsoft.com/ja- jp/virtualization/windowscontainers/quick_start/quic k_start_windows_server 12 Windows Server コンテナー イメージの一覧 PS C:¥> docker images REPOSITORY TAG IMAGE ID CREATED SIZE microsoft/sample-dotnet latest c14528829a37 3 days ago 911 MB microsoft/iis latest b6a44de60ef9 2 weeks ago 8.96 GB microsoft/windowsservercore latest 93a9c37b36d0 5 weeks ago 8.68 GB microsoft/nanoserver latest e14bc0ecea12 5 weeks ago 810 MB コンテナの起動 PS C:¥> docker run -d -p 80:80 microsoft/iis:latest 83f7f70c8b54d94511c3d065be3891271b04e64bc274b779d15dac538882ba43 起動しているコンテナの確認 PS C:¥> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2544f4bf9a37 microsoft/iis:latest "C:¥¥ServiceMonitor..." 2 minutes ago Up 2 minutes 0.0.0.0:80- >80/tcp elastic_curran
  • 13. 動かしてみよう 13 Windows Server コンテナー コンテナの削除 PS C:¥> docker rm -f 83f7f70c8b54 83f7f70c8b54 対話形式での起動 PS C:¥> docker run -it microsoft/windowsservercore:latest powershell デタッチ C-p C-q アタッチ PS C:¥> docker attach e51b407b00cb
  • 14. 動かしてみよう • Hyper-V コンテナー • https://msdn.microsoft.com/ja- jp/virtualization/windowscontainers/management/hy perv_container 14 Hyper-V コンテナー 対話形式での起動 PS C:¥> docker run -it --isolation=hyperv microsoft/nanoserver:latest powershell 起動しているコンテナの確認 PS C:¥> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4991551c5d2 microsoft/nanoserver:latest "powershell" 8 seconds ago Up 5 seconds evil_noyce
  • 15. Deep Dive 15 関係するプロセス(Windows Server コンテナー) カーネル コンテナー エンジン vmcompute.exe wininit.exe コンテナ Docker エンジン dockerd.exe CExecSvc.exe PowerShell.exe image Docker クライアント docker.exe sandbox <ベース OS イメージ/コンテナーサンドボックス格納フォルダ> C:¥ProgramData¥docker¥windowsfilter <コンテナー 構成情報・ログ> C:¥ProgramData¥docker¥containers <構成ファイル> C:¥ProgramData¥docker¥containers¥ <コンテナID>
  • 17. • Windows Server and Docker • http://www.slideshare.net/Docker/windows-server- and-docker-the-internals-behind-bringing-docker- and-containers-to-windows-by-taylor-brown-and- john-starks • Windows Container Networking • https://blogs.technet.microsoft.com/virtualization/20 16/05/05/windows-container-networking/ 17