Misc.

2020/07/01

How to Install Docker Enterprise for Windows Server (2020年7月版)

Mirantis Container Runtime(MCR)の Microsoft によるサポートは 2022年9月に終し、Mirantis の有料サブスクリプションへ。無料な環境としては、→ Mirantis Container Runtime から Docker CE/Moby への切り替え (2022/9/10 追記)
※ Windows Admin Center による簡単セットアップもできます。→ Windows Admin Center によるコンテナーホストの簡単セットアップ(v 3.0?)
※ 2020/11/12 PT リリースの Engine 19.03.13 から、Docker Enterprise は Mirantis Container Runtime(MCR)に改称されました。→  [速報]Docker Enterprise 改め、Mirantis Container Runtime (MCR) リリース(Engine 19.03.13)
※ Microsoft Docs のチュートリアル(Get started: Prep Windows for Containers [11/12/2019])は Docker Enterprise v3.0 がターゲットで、Mirantis Container Runtime への名称変更や v3.1 の install.ps1 の手順のことは反映されていません。
※ LCOW は Experimental のまま開発終了らしいです。”
Note: LCOW support was experimental and is no longer being developed. This repository is now archived.”(2021/07/07 追記)

拙著『Windows 版 Docker & Windows コンテナー テクノロジ入門』(日経 BP)の第 2 章のインストール手順が、Docker Enterprise の Mirantis による買収や Docker Enterprise 3.1 のリリースで変わってきてしまったので、Windows Server 2019 と Windows Server 2016 についてまとめます(Windows Server 2016 のサポートは Docker Enterprise 3.0 が最後)。


●Windows Server 2019 に Docker Enterprise 3.1 をインストールする/アップデートする(Desktop Experience、Server Core、SAC 1809 共通手順、↑の拙著は Docker Enterprise 3.1 リリース前なのでこの内容は含まれません
●Windows Server 2016 に Docker Enterprise 3.0 をインストールする/アップデートする(Desktop Experience、Server Core 共通手順)
●公式情報のリンク集(公式ドキュメントが古いこともありますのでご注意)



●Windows Server 2019 に Docker Enterprise 3.1 をインストールする

1) Windows Server 2019 を新規インストール。

2) 前提となる役割と機能をインストールして再起動。
PS C:¥> Install-WindowsFeature Hyper-V, Containers -IncludeManagementTools
PS C:¥> Restart-Computer -Force

3) Docker Enterprise 3.1 の最新バージョンをインストール。
PS C:¥> Invoke-WebRequest -Uri https://get.mirantis.com/install.ps1 -o install.ps1
PS C:¥> .\install.ps1

4 - オプション) Linux Containers for Windows(LCOW)を利用する場合は linuxkit を導入。LCOW は ver 1809 (LTSC 2019) 以降で利用可能、手順 5 の Experimental 機能の有効化で利用可能になる。 (GitHub のリンク↓をクリックして最新版が無いか確認してみてください。v4.14.35-v0.3.9 は 16 Nov 2018 リリース)

PS C:¥> Invoke-WebRequest -uri https://github.com/linuxkit/lcow/releases/download/v4.14.35-v0.3.9/release.zip -outfile .\release.zip
PS C:¥> Remove-Item "$env:ProgramFiles\Linux Containers" -Force -Recurse
PS C:¥> Expand-Archive .\release.zip -DestinationPath "$Env:ProgramFiles\Linux Containers\."
PS C:¥> Remove-Item .\release.zip


5 - オプション) Experimental 有効化(for LCOW)、NAT サブネットの固定、C:\ProgramData\Docker パスの変更
PS C:¥> notepad C:\ProgramData\Docker\config\daemon.json
以下を記述
{
    "experimental": true,
    "fixed-cidr": "172.16.1.0/24",
    "graph": "D:\\dockerimages"
}

保存
PS C:\> Restart-Service docker

6 - オプション) Windows コンテナーと Linux コンテナーのテスト。
PS C:\> docker run -it --rm mcr.microsoft.com/windows/nanoserver:1809 cmd
PS C:\> docker run -it --rm mcr.microsoft.com/windows/servercore:ltsc2019 powershell.exe
PS C:\> docker run -it --isolation=hyperv --rm mcr.microsoft.com/windows/servercore:ltsc2016 powershell.exe 
PS C:\> docker run -it --rm ubuntu /bin/bash


7 - オプション) DockerMsftProvider がインストールされている場合は Docker Enterprise 3.1 では使わないのでアンインストール。

PS C:¥> Uninstall-Package -Name docker -ProviderName DockerMsftProvider
PS C:¥> Uninstall-Module -Name DockerMsftProvider

●Windows Server 2019 の Docker Enterprise 3.1 をアップデートする

1) リリース状況をチェック。
Docker Engine - Enterprise release notes
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-release-notes/engine-relnotes.html

Mirantis Container Runtime release notes
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-release-notes/mcr-relnotes.html

2) アップデート

PS C:¥> del install.ps1 
PS C:¥> Invoke-WebRequest -Uri https://get.mirantis.com/install.ps1 -o install.ps1
PS C:¥> .\install.ps1


●Windows Server 2016(/2019) に Docker Enterprise 3.0 をインストールする


1) Windows Server 2016/2019 を新規インストール。

2) 前提となる役割と機能をインストールして再起動。
PS C:¥> Install-WindowsFeature Hyper-V, Containers -IncludeManagementTools
PS C:¥> Restart-Computer -Force

3) Docker Enterprise 3.0 の最新バージョンをインストール。(※ Tls12 の指定は Windows Server 2016 のみ、2019 では不要)

PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
PS C:\> Install-Module DockerMsftProvider
PS C:\> Find-Package -Name Docker -ProviderName DockerMsftProvider
PS C:\> Install-Package -Name Docker -ProviderName DockerMsftProvider
PS C:\> Start-Service docker

または

PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
PS C:\> Install-Module DockerMsftProvider
PS C:\> Find-Package -Name Docker -ProviderName DockerMsftProvider -AllVersions
PS C:\> Install-Package -Name Docker -ProviderName DockerMsftProvider -RequiredVersion X.X.X -Update -Force
PS C:\> Start-Service docker

※注意:現在の DockerMsftProvider (1.0.0.8 - 2019/08/26) でインストールできるのは、19.03.5.11(Docker Enterprise 3.0)、18.09.11 (Docker Enterprise 2.1)まで 。DockerMsftProvider の最新情報については、https://www.powershellgallery.com/packages/DockerMsftProvider/ を参照。こちらも参照(Docker Enterprise 3.1)

※ Windows Server 2016 で Tls12 指定が必要な理由については、以下を参照。
"PowerShell ギャラリーは現在利用できません”の原因と回避

4 - オプション) Windows コンテナーのテスト。
PS C:\> docker run -it --rm mcr.microsoft.com/windows/servercore:ltsc2016 powershell.exe
 
●Windows Server 2016(/2019) の Docker Enterprise 3.0 をアップデートする

一応手順は書いておきますが、↑ の注意に書いてあるとおり、Windows Server 2016 に対応したより新しいバージョンは DockerMsftProvider では対応できません。

PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:\> Update-Module DockerMsftProvider
PS C:\> Get-Package -Name Docker -ProviderName DockerMsftProvider
PS C:\> Find-Package -Name Docker -ProviderName DockerMsftProvider -AllVersions
PS C:\> Install-Package -Name Docker -ProviderName DockerMsftProvider -RequiredVersion X.X.X -Update -Force
PS C:\> Start-Service Docker

※ 18.09.12 にアップデートする方法については、以下を参照。
Docker Enterprise 3.1 (19.03.11) Update

※ (12/08 追記)
19.03.13 が
DockerMsftProvider で利用可能になっています。docker version の表示は Docker Engine - Enterprise から Mirantis Container Runtime に。
18.09.14 も DockerMsftProvider で更新可能になってると思います。
Docker Enterprise 3.0(Engine 19.03.13)for Windows Server 2016

 
●公式情報のリンク集(2021/03/08 更新)

インストール手順:
Install Docker Engine - Enterprise on Windows Servers(Docker Enterprise 3.1)
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-products/docker-engine-enterprise/dee-windows.html

Install Mirantis Container Runtime on Windows Servers
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-products/mcr/mcr-windows.html
https://docs.mirantis.com/containers/v3.1/dockeree-products/mcr/mcr-windows.html

Get Docker Engine - Enterprise on Windows Servers(Docker Enterprise 3.0)
https://docs.mirantis.com/docker-enterprise/v3.0/dockeree-products/docker-ee/windows.html

Get Mirantis Container Runtime on Windows Servers
https://docs.mirantis.com/docker-enterprise/v3.0/dockeree-products/mcr/windows.html
https://docs.mirantis.com/containers/v3.0/dockeree-products/mcr/windows.html

 Docker Engine on Windows(Docker Enterprise 3.0 & Docker Desktop)(05/03/2019 ← Enterprise 3.1 の前
https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-docker/configure-docker-daemon

リリースノート:
Docker Engine - Enterprise release notes
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-release-notes/engine-relnotes.html

Mirantis Container Runtime release notes
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-release-notes/mcr-relnotes.html
https://docs.mirantis.com/containers/v3.1/dockeree-release-notes/mcr-relnotes.html

Docker Enterprise 3.1 について:
New in Docker Enterprise 3.1
https://www.mirantis.com/software/docker/docker-enterprise/

Announcing Docker Enterprise 3.1 General Availability
https://www.mirantis.com/blog/announcing-docker-enterprise-3-1-general-availability/

Enterprise Maintenance Lifecycle
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-compatibility-matrix/enterprise-maintenance-lifecycle.html

MKE, MCR, and MSR Maintenance Lifecycle
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-compatibility-matrix/enterprise-maintenance-lifecycle.html

Enterprise Compatibility Matrix
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-compatibility-matrix/enterprise-compatibility-matrix.html

MKE, MSR, and MCR Compatibility Matrix
https://docs.mirantis.com/docker-enterprise/v3.1/dockeree-compatibility-matrix/enterprise-compatibility-matrix.html
https://docs.mirantis.com/containers/v3.1/dockeree-compatibility-matrix/index.html

※ Docker Enterprise 2.0 は 2020/04/16 に EOL(End of Life)になりました。Docker Engine 17-06-2-ee-25 と 18-03.1-ee-12 が最後のバージョンです。
※ Docker Enterprise 2.1 は 2020/11/06 に EOL になります。最新バージョンは 2020/06/24 の 19.03.12 ですが、DockerMsftProvider ではインストールやアップデートはできません。
※ Docker Enterprise 3.0 は 2021/07/21 に EOL になります。 DockerMsftProvider でインストールできるのは 19.03.5.11 (2019/11/14 2020/06/24) まで。Docker Enterprise 3.0 は Engine 19.03.x+UCP 3.2.x+DTR 2.7.x、Docker Enterprise 3.1 は Engine 19.03.x+UCP 3.3.x+DTR 2.8.x。Engine だけ 最新(19.03.11)とかにマニュアルで入れ替えでもいいのかどうか、問題は生じないのかどうかははっきりしませんが、最新のエンジンは https://repos.mirantis.com/win/static/stable/x86_64/ で見つかります。ちなみに、Docker Enterprise 3.1 リリース時に install.ps1 で Windows Server 2019 にインストールしてみましたが、インストールはできたもののコンテナーは強制終了しちゃいました。

※ Azure Marketplace の Windows Server 2019/SAC 1809 以降 with Containers イメージは、2020 年 6 月時点のもので DockerMsftProvider による Docker Enterprise 3.0 (19.03.5) 入りです。


※ Auzre Marketplace には Docker Engine - Enterprise for Windows Server 2019/2016 というイメージもありますが、これは公開元は Microsoft ではなく、Cloud Infrastructure Service(https://cloudinfrastructureservices.co.uk/)という Microsoft Silver Partner なので間違えないように。
Azure クレジット枠があるサブスクリプションの場合(無料アカウントを含む)、そのクレジット枠では支払いできず、別途課金が発生します。無料アカウントで間違えてデプロイしちゃうと、課金が発生するため利用枠が残っていてもロックされちゃうかもしれません。

※ Docker Desktop for Windows 関連
Docker Desktop 2.3.0.2 - WLS 2 backend で Home 対応 (2020/05/12)
Windows Subsystem for Linux Update - 4.19.104 (2020/06/29)

※ コンテナーホストのウイルス対策関連(2021/03/25 追記) 

Windows コンテナー用のウイルス対策最適化
https://docs.microsoft.com/ja-jp/windows-hardware/drivers/ifs/anti-virus-optimization-for-windows-containers
Antivirus software and Docker
https://docs.docker.com/engine/security/antivirus/

Dockerルート(既定はC:\ProgramData\Docker)を除外するとパフォーマンス改善そうですが、イメージに含まれる、あるいはコンテナーから書き込まれたマルウェアを検出できないというデメリットあり。

Windows Defender の場合、普段はC:\ProgramData\docker を除外して運用し、業務時間外に次の 1 行の PowerShell コマンドを実行することでカスタムスキャン(docker サービス停止、除外解除、スキャン、除外復元、docker サービス開始)できます。

Stop-Service -Name Docker; Remove-MpPreference -ExclusionPath "C:\ProgramData\docker"; Start-MpScan -ScanPath "C:\ProgramData\docker" -ScanType CustomScan; Add-MpPreference -ExclusionPath "C:\ProgramData\docker"; Start-Service -Name Docker

 

2 件のコメント:

  1. こんにちは。とても参考になりました。
    ただ一点、私の環境(フレッシュインストールのW2019 VM)ではinstall.ps1がそのままでは最後まで行きませんでした。

    Start-Service : Service 'containerd (containerd)' cannot be started due to the following error: Cannot start service
    containerd on computer '.'.

    というエラーを表示して終了してしまいます。
    幸いサービスを起動しないというオプションを付けると正常終了し、その後Docker Engineの方のサービスは起動できコンテナーの実行はできます。
    containerdというサービスの方は以後も起動できずPowerShellから起動を試みると常に上記のエラーを返します。

    質問よろしいでしょうか。
    そもそもこのcontainerdというのは何か。初心者向けに説明しているリンクなどあれば教えて下さい。
    軽くググってみたのですが見つけられていません。英語でも結構です。

    起動できないまま、本番Dockerサーバとして使っているのですが問題あるでしょうか?
    今のところ、特に制約を感じていません。実行したいコンテナー(Linuxベース)を実行できています。

    よろしくお願いします。

    返信削除
  2. containerd は kuberenetes 関連で必要になってくるものだと思います。https://thinkit.co.jp/article/18024

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。