ROOM
O
https://channel9.msdn.com/Events/de-code/decode-2015/CDP-008
何故、Containers か、その展望に関しましては上記をご参照ください
Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
何故、Containers か、その展望に関しましては上記もあわせてご参照ください
本資料は、現在開発中の製品を取り扱っています。
現在、お客様からのフィードバックを迅速に製品開発に
反映する仕組みに変わりつつあり、本スライドに記載された
仕様および機能は大幅に変更される可能性があります。
ご理解いただければ幸いです。
戦後登場したコンテナは、後に物流革命と呼ばれる物流の効率化を促進しました。ITにおけるコンテナも、また...
Container
App
Framework
Framework
Linux Kernel
Process Process
Hardware
Container
Process Process
Containe
r
Process
Docker 最新動向 と Azure Container Service 入門
Docker 最新動向 と Azure Container Service 入門
協調し、適当な間隔で
アプリケーションに生じた事象をフィードバック
注意:
コンテナ内部に接続する場合は、
コンテナ作成時に -i と -t オプショ
ンを指定し、対話シェルをコマンド
として指定すること!!
• Get-ContainerImage : コンテナイメージの確認
• New-Container : コンテナの作成
• Enter-PSSession : コンテナ内で PowerShell を起動
• Install-WindowFeature : IIS をインストール
• ホストの Internet Explorer でデフォルトページの確認
デモ: コンテナの作成と起動
デモ: コンテナの作成と起動
① Get-ContainerImage でコンテナイメージの一覧を確認 ② New-Container でコンテナを作成
③ Start-Container でコンテナを起動 ④ Get-Container で起動を確認
デモ: コンテナの作成と起動
⑤ Enter-PSSession -ContainerId でコンテナ内にて
PowerShell を起動、接続 ⑥ Install-WindowsFeature でIISをインストール
⑦ IISのインストールが終わったのを確認 ⑧ ipconfig でIPアドレスを確認
デモ: コンテナの作成と起動
⑨ ホスト側で Internet Explorer 起動、先のIPアドレスをいれて、IISのデフォルトページが表示されるのを確認
WindowsServer 2016
Container
Managemet
Stack
Hardware
Container
Service
Power
Shell
docker
.exe
Service
dockerd
WindowsServer 2016
Hardware
Container
Service
Service
Nano
VM
Container
Managemet
Stack
Power
Shell
docker
.exe
dockerd
WindowsServer 2016
Container
Managemet
Stack
Hardware
Power
Shell
docker
.exe
Container
Service Service
Container
Service
Service Service
dockerd
ホストOS コンテナ内部
Windows Server Container でのプロセス
ホスト側にはコンテナ側のプロセスが見えてしまっている!!
WindowsServer 2016
Hardware
Container
Service Service
Container
Service
Service ServiceContainer
Managemet
Stack
Power
Shell
docker
.exe
dockerd
WindowsServer 2016
Hardware
Container
Service Service
Container
Service
Service Service
Nano Server Nano
VM VM
Container
Managemet
Stack
Power
Shell
docker
.exe
dockerd
Windows
Quotas
and limits
プロセス
State
isolation
Hostile
Multi-tenant Isolation
Hardware
virtualization
Job
Objects
Windows
Server
Containers
Hyper-V
Containers
Hyper-V
仮想マシン
速くて効率的 より隔離されてより安全
• Hyper-V Container のコンテナを作成、起動
• モードの確認
• 接続
• PowerShell プロセスを確認
デモ: Hyper-V Container
デモ: Hyper-V Container
① このデモでは2枚のコマンドプロンプトウィンドウを使います
② 1枚目のウィンドウで docker コマンドを実行
docker image でコンテナイメージ一覧を確認
③ docker create でコンテナを作成
このとき、--isolation=hyperv があるのに注意 ④ docker ps -a で作成されたコンテナを確認
デモ: Hyper-V Container
⑤ docker start でコンテナを起動
⑥ docker attach でコンテナ内に接続
⑦ コンテナ内にて Get-Proess を実行、
PowerShell のプロセスIDを確認
⑧ もう1枚のウィンドウを使いホスト側での
PowerShell のプロセスIDを確認
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
WinNAT
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
WinNAT
NAT モード : WinNAT
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
• ホストからと 透過モードのコンテナ内からの PING
ホストと異なる MAC アドレスが流れている
透過モードと L2 Bridge モードの違い
ホストの MAC アドレス
コンテナの MAC アドレス
• ホストからと L2Bridge モードのコンテナ内からの PING
透過モードと L2 Bridge モードの違い
ホストの MAC アドレス
コンテナの MAC アドレス
ホストと同じ MAC アドレスが流れている
(Microsoft クラウド専用)
Container
Proess
Windows
Hardware
Ethernet
NIC
仮想スイッチ
Container
Proess
vEthernet
Proess
vEthernet
(NAT, 透過, L2Bridge いずれの場合も)
Windows Server Container の場合、ファイアーウォールに要注意!!
もしくは
Container
Proess
Windows
Hardware
これから述べる事項は「現状」でのご説明です。
現在、お客様からのフィードバックを迅速に製品開発に
反映する仕組みに変わりつつあり、本スライドに記載された
仕様および機能は大幅に改善されると期待されます。
ご理解いただければ幸いです。
• Windows Server 2016 Technical Preview にて試せます
Release Notes: Important Issues in Windows Server 2016 Technical Preview
( https://technet.microsoft.com/en-us/library/dn765470.aspx ) より
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/system_requirements より
https://aka.ms/tp5/Install-ContainerHost
https://aka.ms/tp5/New-ContainerHost
WindowsServer 2016
Container
Managemet Stack
Hardware
Container
Service
Power
Shell
docker
.exe
dockerd
Container
Service
WindowsServer 2016
Hardware
WindowsServer 2016
Container
Managemet Stack
Hyper-V
Container
Service
Power
Shell
docker
.exe
dockerd
Container
Service
https://channel9.msdn.com/Shows/TechFielders/NestedHyper-V
WindowsServer 2016
Container
Managemet
Stack
Hardware
PowerShell
Container Module
dockerd
docker.exe
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/management/container_networking より
・ --net-alias
・ --aux-address
・ --internal
・ --ip-range
・ --add-host
・ --dns
・ --dns-opt
・ --dns-search
・ -h, --hostname
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/work_in_progress
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/reference/app_compat
同じレポジトリ
同じレポジトリ
• Repository : 差分イメージの集合体
• あるイメージをベースとして、そこからの差分を格納したひとかたまり
• local repository : Docker を実行するホストに存在
• docker search : Docker Hub へアクセス
• docker pull : 公開イメージを取得
• docker run : 実際にコンテナを実行 (NATモード)
• リモートの端末から Webブラウザで表示
Docker Hub
Docker Hub
① docker search コマンドで DockerHub を検索 ② 検索結果から一つを選び、docker pull でダウンロード
③ ダウンロードサイズが差分のため 31MBと小さいことに注目 ④ ダウンロード終了
Docker Hub
⑤ docker image でコンテナイメージ一覧を表示
先ほど pull したイメージが追加されているのを確認
⑥ docker run でコンテナ作成と同時に実行
イメージは先ほどのIIS入りイメージをIDで選択
またこのとき、-p 10080:80 でポート転送を
設定している
⑦ コンテナで実行した cmd が表示されたら、
別端末に画面を切り替える
Docker Hub
⑧ 別端末でウェブブラウザ(Microsoft Edge)を起動、コンテナホストのIPアドレスでポート 10080 へアクセス、IISのデフォルトページを確認
アンケートにご協力ください。
●アンケートに 上記の Session ID のブレイクアウトセッションに
チェックを入れて下さい。
●アンケートはお帰りの際に、受付でご提出ください。
マイクロソフトスペシャルグッズと引換えさせていただきます。
ROOM O
Ask the Speaker のご案内
●本セッションの詳細は、EXPO 会場内
『Ask the Speaker』コーナー
Room A カウンタにてご説明させて
いただきます。是非、お立ち寄りください。
Ask the Speaker
EXPO会場MAP
Docker 互換: 他のOSからの操作(リモート接続)
WindowsServer 2016
Container
Managemet Stack
Hardware
dockerd
docker
SSL による暗号化
サーバ証明書とクライアント証明書での認証
• Windows Container でインストールされる dockerd は、
適切なSSL証明書(サーバおよびクライアント)を配置する
ことで、外部アクセスを許可する
• 事前に証明書を作成、配置
• 証明書ベースで認証を取りつつ、リモートから操作
• コンソール操作も可能
Docker 互換: 他のOSからの操作(リモート接続)
if not exist %systemroot%¥system32¥dockerd.exe (goto :legacysecure)
ファイル名 内容 サーバ側 クライアント側
ca.pem
CA局の証明書
以下のサーバ証明書、クライアント証明書はこのCAにて
電子署名が施されている必要がある
● ●
server-cert.pem サーバ証明書 ●
server-key.pem 上記サーバ証明書に対応する秘密鍵 ●
cert.pem クライアント証明書 ●
key.pem 上記クライアント証明書に対応する秘密鍵 ●
https://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome
https://aka.ms/tp5/Install-ContainerHost
https://aka.ms/tp5/New-ContainerHost
https://docs.docker.com/engine/reference/commandline/cli/
WindowsServer 2016
Container
Managemet
Stack
Hardware
Container
Service
PowerShell
Container Module
PowerShell
for Docker
Service Service
dockerd
Container
Service
Nano
VM
docker.exe
この部分がまだ手作業
IMAGE
Container
FROM
Container Container ContainerRUN RUN ADD
IMAGE
docker build
File Container
CMD
docker run
FROM ubuntu
MAINTAINER shiro@contoso.com
# install sshd
RUN apt-get install -y ssh
RUN service ssh start
RUN service ssh stop
# create gme user
RUN useradd gme
RUN echo "gme:hogehoge" | chpasswd
RUN mkdir /home/gme
RUN chown gme:gme /home/gme
ADD hello.txt /home/gme/hello.txt
# open the port
EXPOSE 22
# start command
CMD [ "/usr/sbin/sshd","-D" ]
FROM windowsservercore
MAINTAINER shiro@contoso.com
# Uses dism.exe to install the IIS role.
RUN dism.exe /online /enable-feature /all /featurename:iis-
webserver /NoRestart
# Creates an html files
RUN echo "Hello World" > c:¥inetpub¥wwwroot¥index.html
# Sets a command to run
CMD [ "cmd" ]
https://nssm.cc/
• 実質的に Hyper-V Container しか使えません
• 上記スクリプトは Windows10 で実行すると、Hyper-V Container (-HyperV)が自動的に有効になります
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10 参照(5/27以降)
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~

INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~