Windows 10 Docker インストール

2020-11-16 | コメント(0)

Windows 10 に Docker をインストールする。

Microsoft Docs 参考サイト
Windows のコンテナー 環境をセットアップする (Windows 10)

Microsoft Docs のサイトは、Windowsコンテナーの説明になっているため、Hyper-V が必須のように見えますが、インストールパターンを試したところ、WSL2 で Linuxコンテナーだけを動かす場合は、Hyper-V が無くても動かすことができました。

Windows 10 の Docker は、いままでのバージョンと経緯で呼び方が色々あります。

  • Docker CE、および Docker CE for Windows ※ CE は Compact Edition の略です。
  • Docker for Windows ※ CEを省略した。
  • Docker Desktop、および Docker Desktop for Windows ※ これが現在の名称。

他に、Windows の Docker で、Docker EE と言われるものがありますが、これは Windows Server の Docker を指します。
※ EE は Enterprise Edition の略です。

ややこしいですが、CE、Desktop、for Windows が付いていれば、Windows 10 の Docker を指していると思って良いです。

なお、Windows Server に Docker をインストールするには、Windows 10 と基底環境が変わるので、当エントリーのものはでは無く、
Windows Server Docker インストール
を参考にしてください。

Windows 10 で Docker を使用するには、仮想化テクノロジが必須です。

仮想化テクノロジが有効かどうかは、PCのBIOSの設定になります。判断基準として「Windows の機能の有効化または無効化」で Hyper-V Hyperviser が利用できない場合は、仮想化テクノロジが無効なのでBIOSで有効にしてください。PCが仮想化に未対応などで有効にできない場合は Windows 10 の Docker は使用できないので諦めましょう。

例として以下、仮想化テクノロジが無効なので、Hyper-V Hyperviser をインストールすることができない状態のものです。この場合は Docker を使用することができません。

Windows 10 の Hyper-V が利用できない

また、Windows コンテナーを動かす場合は、Containers と Hyper-V が必要になります。

Linux コンテナーを動かす場合は、Hyper-V もしくは WSL2 を選択することができます。

Linux コンテナーについて、以前のバージョンの Docker Desktop では、Hyper-V の仮想マシンで Linux コンテナーを動かして対応していましたが、現在は WSL2 でLinux コンテナーを動かすことができます。

Linux コンテナーを使用する場合には、WSL2 を使用するほうが動作速度が速く、Hyper-V の仮想マシンにメモリが取られることもないので、WSL2 を使用するほうが良いです。

環境の依存関係を表すと次のようになります。

Windowsコンテナー
を使用するのに必要
Linuxコンテナー
を使用するのに必要
Docker インストーラー
でインストールされる
仮想化テクノロジ -
Containers - (※) Hyper-V 選択時
Hyper-V - (※) Hyper-V 選択時
WSL
(Linux 用 Windows サブシステム)
- 〇 (※) WSL2 選択時
仮想マシンプラットフォーム - 〇 (※) WSL2 選択時
x64 マシン用 WSL2 Linux
カーネル更新プログラム パッケージ
- 〇 (※) -
WSL2 - 〇 (※) (Docker 起動時)

WSL2 の必要条件

  • x64 システムの場合: バージョン 1903 以降、 ビルド 18362 以上。
  • ARM64 システムの場合: バージョン 2004 以降、 ビルド 19041 以上。

WindowsコンテナーとLinuxコンテナーを動かす場合、どちらも仮想化が有効になっていないと使えないので、特に理由が無ければ、Hyper-V と WSL2 の両方を選択しておくのが良いです。

WSL2 が使えない場合は、パフォーマンスは落ちますが Hyper-V で Linuxコンテナーを動かすことができます。

Docker のインストーラーでは、Hyper-V、WSL2 を選択してインストールすることで、Windowsの機能も有効化されます。

WSL2 のための「Linux カーネル更新プログラム パッケージ」はインストーラーに含まれていないので、手動でインストールする必要があります。

まずは Docker のサイトからWindows用のインストーラーをダウンロードします。

Install Docker Desktop on Windows

Docker Desktop for Windows インストーラー説明サイト

Docker Desktop for Windows ダウンロードサイト

ダウンロードファイルは、Docker Desktop Installer.exe です。ファイルのブロックは解除しておきましょう。

Docker Desktop for Windows インストーラー

なお、Docker のインストール時に、WSL2 を選択することが出来ますが、WSL2 に必要な「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」はインストールしてくれませんので、WSL2 (Linuxコンテナー) のために、先に WSL2 の環境を整えておいてから Docker をインストールするほうが良いと思います。

WSL2 のインストールは WSL2 インストール も参考にしてください。

Hyper-V も先に有効化しておいても良いです。

何れも、Hyper-V と Linux 用 Windows サブシステム は、インストールされていない環境にインストールするとPCの再起動が必要になります。

それでは、ダウンロードした Docker のインストーラーを実行します。インストールは管理者で行ってください。

当エントリー時のバージョンは、Docker Desktop 2.5.0.1 (499550) です。

Docker Desktop for Windows インストール

少し待たされた後に、3つのチェックボックスが表示されてインストールする機能の選択になります。

Docker Desktop for Windows インストール Configuration

Enable Hyper-V Windows Features にチェックを入れると、
Containers と、Hyper-V の機能がインストールされます。

Windowsコンテナーを使用する場合に必須です。

また、Linuxコンテナーで WSL2 を使用しない場合にも必要です。

Windowsコンテナーは使用せず、Linuxコンテナーを WSL2 で使用する場合のみ選択しなくても良いです。

Install required Windows components for WSL 2 にチェックを入れると、
Linux 用 Windows サブシステム と、仮想マシンプラットフォーム の機能がインストールされます。

Linuxコンテナーを WSL2 で使用する場合に必要です。

Add shortcut to desktop は、デスクトップにショートカットアイコンを追加するかどうかです。

そのまま、3つともチェックを入れたままインストールします。

Docker Desktop for Windows インストール中

Docker Desktop for Windows インストール完了

インストールが完了すると、PCの再起動かログオフになります。

Hyper-V か WSL を新たにインストールした場合は再起動になりますが、既にインストール済みであれば、ログオフだけで済みます。Docker がインストールされると、ローカルのグループに docker-users というグループが作成されて、そこでユーザー権限を管理するので、ユーザーの権限を反映させるために、ログオフが必要になります。

再起動もしくはログオフした後、ログイン時に Docker のサービスが自動的に開始されます。

デスクトップの右下に Docker is starting Linux Containers WSL 2 backend is starting... が表示されます。

これは、Linuxコンテナー の WSL2 のバックエンドで、開始準備中を表します。

Docker is starting Linux Containers WSL 2 backend

その後、準備が整ったら Docker Desktop is running が表示されます。

Docker Desktop is running

これで Docker が利用できる状態になります。初期状態は WSL2 で Linuxコンテナー が動く状態です。

WSL2 の環境が整っていない場合は、「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」がインストールされていないので Docker が起動できず、次の様にカーネル更新のためのダイアログが表示されます。

この場合は、ここで Cancel をして、WSL2 に必要な「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をインストールして、Dockerをリスタートさせます。

WSL 2 installation is incomplete

参考 WSL2 インストール

WSL2 Linux カーネル更新プログラム パッケージ インストール完了

「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」がインストールされたら、タスクトレイの Docker のアイコンを右クリックしてリスタートさせる。

Docker Desktop Restart

Restart Docker Desktop

Docker Desktop is restarting

まず先に、Docker をインストールしたことで追加される環境変数です。

システム環境変数のPathに、
C:\Program Files\Docker\Docker\resources\bin
C:\ProgramData\DockerDesktop\version-bin
の2つが追加されます。

Windows 10 Docker 環境変数

Windows 10 Docker Path

C:\Program Files\Docker\Docker\resources\bin には、docker-compose.exe などがあります。

Windows 10 Docker Resources

C:\ProgramData\DockerDesktop\version-bin は、Docker 本体へのショートカットがあり、これは C:\Program Files\Docker\Docker\resources\docker.exe に繋がります。

Windows 10 Docker 本体

Docker のバージョンを確認。PowerShellを起動し、docker version を実行してみます。

Docker Desktop Version

PS C:\Users\Administrator> docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.2
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:00:27 2020
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.13
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       4484c46d9d
  Built:            Wed Sep 16 17:07:04 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.3.7
  GitCommit:        8fba4e9a7d01810a393d5d25a3621dc101981175
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

という結果でした。

また、現在 WSL2 で Linuxコンテナーが動いている状態なので WSL の状態も見てみました。

PS C:\Users\Administrator> wslconfig /l
Linux 用 Windows サブシステム ディストリビューション:
docker-desktop (既定)
docker-desktop-data

ディストリビューションが docker-desktop と docker-desktop-data というもので、2つあります。

WSL のバージョンは、

PS C:\Users\Administrator> wsl --list --verbose
  NAME                   STATE           VERSION
* docker-desktop         Running         2
  docker-desktop-data    Running         2

どちらも、WSL2 で動いていることが判ります。

Docker Desktop WSL List Verbose

なお、Hyper-V も有効ですが、WSL2 で Linuxコンテナーが動いている状態は、Hyper-V 上に仮想マシンはありません。

カテゴリ:

コメントする

※HTMLタグは使えません

Author

あきちゃん

主に、.NETでWebシステムの設計と開発をしています。
(茨城県在住, 都内勤務)
プロフィール