2016/06/02

Windows コンテナーのためのコンテナー ホストのセットアップ手順が更新されています!(新手順と更新方法)

[新着]お勧めホワイト ペーパー『Windows Server 2016 & System Center 2016 Technical Preview 5 評価ガイド』(2016/05/23) では、Windows Server 2016 TP5 のコンテナー ホストのセットアップ手順 (付録に収録) は Install-ContainerHost.ps1 (https://aka.ms/tp5/Install-ContainerHost) を使用したものになっていますが、5 月末に Docker Daemon (Dockerd.exe) の更新バージョンビルド (Docker version 1.12.0-dev, build 8e92415) が出て、それに合わせて新しい判断手順になっています。

新しいビルドには dockerd --register-service|--unregister-service が追
加されていて、以前の NSSM および C:\ProgramData\docker\runDockerDaemon.cmd を使用したサービス登録 (Nano Server はスケジュールされたタスク)は使われなくなっています。
 
新しい手順と、古い手順でセットアップしたホストの更新手順をメモるんるん。

Windows Server 2016 TP5 をコンテナー ホストとしてセットアップする (新しい手順)
詳しくは... https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment

役割と機能のインストール

PS C:> Install-WindowsFeature containers
PS C:> Install-WindowsFeature hyper-v
PS C:> Restart-Computer

Docker Daemon & Client のインストール
PS C:\> New-Item -Type Directory -Path 'C:\Program Files\docker\'
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/dockerd -OutFile $env:ProgramFiles\docker\dockerd.exe
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFiles\docker\docker.exe
PS C:\> [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
PS C:\> dockerd --register-service

PS C:\> Start-Service Docker

NAT スイッチ (オプションで Transparent スイッチ) の作成
既定で nat という名前であると思いますが、念のため確認。

PS C:\> docker network ls

詳しくは... https://msdn.microsoft.com/en-us/virtualization/windowscontainers/management/container_networking

TLS の有効化 (オプション)
C:\ProgramData\docker\config\daemon.json を作成し、次のように記述して上書き保存。公式ドキュメントは server-key.pem", となっていますが、最後の, は不要。

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem"
}

PS C:\> Restart-Service Docker
PS C:\> netsh advfirewall firewall add rule name="Docker daemon " dir=in action=allow protocol=TCP localport=2376

ベース OS イメージのインストール
PS C:\> Install-PackageProvider ContainerImage -Force

PS C:\> Install-ContainerImage -Name WindowsServerCore
PS C:\> Install-ContainerImage -Name NanoServer
PS C:\> Restart-Service docker

イメージにタグを付ける
PS C:\> docker tag windowsservercore:10.0.14300.1000 windowsservercore:latest
PS C:\> docker tag nanoserver:10.0.14300.1010 nanoserver:latest

Nano Server をコンテナー ホストとしてセットアップする (新しい手順)

詳しくは... https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano

役割と機能のインストール
(NanoServer\Packages から Nano Server イメージ作成時、またはデプロイ後に Compute および Containers のパッケージを追加でもよい(と思う)。その場合、この手順はスキップ)
PS C:\> Install-PackageProvider NanoServerPackage
PS C:\> Install-NanoServerPackage -Name Microsoft-NanoServer-Containers-Package

Docker Daemon & Client のインストール
別の PC で https://aka.ms/tp5/b/docked と https://aka.ms/tp5/b/docker から dockerd.exe とdocker.exe をダウンロードして、NanoServerのC:\Windows\System32 にコピーする。
PS C:\> dockerd --register-service
PS C:\> Start-Service Docker


TLS の有効化 (推奨)
C:\ProgramData\docker\config\daemon.json を作成し、次のように記述して上書き保存。公式ドキュメントは server-key.pem", となっていますが、最後の, は不要。

{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem"
}

PS C:\> Restart-Service Docker
PS C:\> netsh advfirewall firewall add rule name="Docker daemon " dir=in action=allow protocol=TCP localport=2376

ベース OS イメージのインストール
PS C:\> Install-PackageProvider ContainerImage -Force
PS C:\> Install-ContainerImage -Name NanoServer
PS C:\> Restart-Service docker

イメージにタグを付ける
PS C:\> docker tag nanoserver:10.0.14300.1010 nanoserver:latest


Windows 10 Insider Preview をコンテナー ホストとしてセットアップする (新しい手順)
詳しくは... https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10


機能のインストール
PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName containers -All
PS C:\> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Docker Daemon & Client のインストール
PS C:\> New-Item -Type Directory -Path 'C:\Program Files\docker\'
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/dockerd -OutFile $env:ProgramFiles\docker\dockerd.exe
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFiles\docker\docker.exe
PS C:\> [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)
PS C:\> dockerd --register-service
PS C:\> Start-Service Docker


ベース OS イメージのインストール
PS C:\> Install-PackageProvider ContainerImage -Force

PS C:\> Install-ContainerImage -Name NanoServer
PS C:\> Restart-Service docker

イメージにタグを付ける
PS C:\> docker tag nanoserver:10.0.14300.1010 nanoserver:latest


Docker クライアントだけをインストールする (新しい手順)
PS C:\> New-Item -Type Directory -Path 'C:\Program Files\docker\'
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFiles\docker\docker.exe
PS C:\> [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

・・・

更新されたDockerd.exe は、サービス登録機能が実装されていて、旧バージョンと違っているみたい。久しぶりに Docker コマンドで Windows Server コンテナーを動かしたら、どっか(Docker)動きがおかしくなっていたので気づきました。

Install-ContainerHost.ps1 でセットアップ済みのコンテナー ホストを更新された Dockerd.exe 対応にするには...

Windows Server 2016 TP5 と Windows 10 Insider Preview の場合

Docker Daemon サービスとバイナリの削除

C:\> net stop Docker
C:\> C:\Windows\System32\nssm remove docker

C:\> del C:\Windows\System32\dockerd.exe
C:\> del C:\Windows\System32\docker.exe
C:\> del C:\Windows\System32\nssm.exe

更新された Docker Daemon & クライアントのインストール
PS C:\> New-Item -Type Directory -Path 'C:\Program Files\docker\'
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/dockerd -OutFile $env:ProgramFiles\docker\dockerd.exe
PS C:\> Invoke-WebRequest https://aka.ms/tp5/b/docker -OutFile $env:ProgramFiles\docker\docker.exe
PS C:\> [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker",[EnvironmentVariableTarget]::Machine)
PS C:\> dockerd --register-service
PS C:\> Start-Service Docker
PS C:\> docker tag windowsservercore:10.0.14300.1000 windowsservercore:latest (Windows 10 の場合は不要)
PS C:\> docker tag nanoserver:10.0.14300.1010 nanoserver:latest (Hyper-V コンテナーをサポートしない場合は不要)

Nano Server の場合

Docker Daemon サービスとバイナリの削除  
PS C:\> Get-Process dockerd|Stop-Process -Force
PS C:\> Unregister-ScheduledTask -TaskName Docker
PS C:\> Del C:\Windows\System32\Dockerd.exe
PS C:\> Del C:\Windows\System32\Docker.exe

更新された Docker Daemon & クライアントのインストール
別の PC で https://aka.ms/tp5/b/docked と https://aka.ms/tp5/b/docker から dockerd.exe とdocker.exe をダウンロードして、NanoServerのC:\Windows\System32 にコピーする。
PS C:\> dockerd --register-service
PS C:\> Start-Service Docker
PS C:\> docker tag nanoserver:10.0.14300.1010 nanoserver:latest

TLS のサポート (以前の C:\ProgramData\docker\runDockerDaemon.cmd は使用されません)
C:\ProgramData\docker\config\daemon.json を作成し、次のように記述して上書き保存。公式ドキュメントは server-key.pem", となっていますが、最後の, は不要。
{
    "hosts": ["tcp://0.0.0.0:2376", "npipe://"],
    "tlsverify": true,
    "tlscacert": "C:\\ProgramData\\docker\\certs.d\\ca.pem",
    "tlscert": "C:\\ProgramData\\docker\\certs.d\\server-cert.pem",
    "tlskey": "C:\\ProgramData\\docker\\certs.d\\server-key.pem"
}
PS C:\> Restart-Service Docker
PS C:\> netsh advfirewall firewall add rule name="Docker daemon " dir=in action=allow protocol=TCP localport=2376


0 件のコメント: