開発環境ではDockerでDBや各種バックエンドを動かすことが多いのですが、WFHが広がる中で自宅がWindows 10 HomeでDocker Desktop for Windows起動できないんだけど、何か手がないかと相談があったりなかったり。
以前試したときは問題なかったのですが、改めて最新の状況で試します。 また、wsl2の仕組みから言ってHyper-VでホストしたWindows 10 Homeでも動作するはずなのでそこも確認です。
Hyper-VにWindows 10 Homeをインストールしているのでその検証結果も知りたい人にも向けていいのではということで。
- 更新履歴
- 概要
- WSL2について
- Docker Desktop for Windows をインストールする
- Docker の実行確認
- Docker の設定
- Hyper-V 上の Windows 10 Home はだめなの?
更新履歴
- 2020/5/17: Docker StableにWSL2対応がきたのを確認したのでEdge限定の記述を修正
- 2020/5/28: Windows 10, version 2004がきたので、Insider Previewの記述を修正
概要
- Windows 10 Version 2004 (2020 May Update)がGAされました。
るまではInsider Preview (Slow Ringでok) が必要 - Docker Desktop fo WindowsはStableでok
Edgeが必要(Stableはよ) - wsl2上のLinuxディストロでDockerを動かすのはまた別に
WSL2について
- WSL1はオワコン
化する運命。 - FAQ参照 : WSL 2 についてよく寄せられる質問 | Microsoft Docs
Docker Desktop for Windows をインストールする
* Insider Previewを有効にする (Slow Ring)
- Windows UpdateでWindows 10 2004にあげる
- Windows Subsystem for Linuxの有効化をしてWSL2を使う
- Docker Desktop for Windowsをインストール (Edge)
この時点でWindowsバージョンは1909

Insider Preview を Slowring で有効にする
2020/5/28 以降は、Windows Update で降りてくるので Insider Preview が不要です。




Windows Update で Windows 10 2004 にあげる
Docker DesktopをWindows Homeに入れるには、19018以上である必要があるのでWindows Updateをかける。 2時間近く時間がかかるので注意。

これでWindows 10 Version 2004となる。

Windows Subsystem for Linux の有効化をしてWSL2を使う
Docker for Desktop で実施されるので実行する必要がありません。もしもDocker Desktop for Windows をインストール後に間違って無効にした場合にぐらいしか使わない。
Windows Subsystem for LinuxとVitrual Machine Platformを有効にするため、Windows PowerShellを管理者で起動して、コマンドを実行。
Get-WindowsOptionalFeature -Online | where FeatureName -match linux | Enable-WindowsOptionalFeature -Online -NoRestart Get-WindowsOptionalFeature -Online | where FeatureName -match virtual | Enable-WindowsOptionalFeature -Online

再起動される。

wslコマンドが利用可能になっている。ディストロはインストール不要。
$ wsl -l Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。 ディストリビューションは Microsoft Store にアクセスしてインストールすることができます: https://aka.ms/wslstore
Docker Desktop for Windows をインストール
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
記事公開時点はEdgeが必須でしたが、StableにきたのでStableでokです。


もしWindows Updateをかけていないと、Docker Desktopのインストールがコケる。
Docker Desktop requires Windows 10 Pro/Enterprise (15063+) or Windows 10 Home (19018+)
Windows 10 2004になっていれば、WSL2の有効化を効かれるのでそのままOK。


インストール後は再起動する。

再起動後にwsl2のインストールが完了していないことが言われる。

wsl2 の有効化
Linuxカーネル更新プログラムパッケージを入れる。
https://aka.ms/wsl2kernelのダウンロードから。

これでwsl2が有効になる。
PCを再起動して、docker-desktopが見えるようになる。
$ wsl -l

ついでにwsl2をデフォルトバージョンにしておく。
$ wsl --set-default-version 2
Docker の実行確認
実行できるか確認する
docker run --rm hello-world

ボリュームマウントも問題ない

Docker の設定
ドライブ共有が不要になった
従来のDocker Desktop for Windowsではホストマシンとコンテナのドライブ共有が必要だったが、これは不要になった模様。 実際、なにもしなくてもボリュームマウントされた。Firewallやアンチマルウェアとのバトルがなくなってめでたい。

Hyper-V 上の Windows 10 Home はだめなの?
問題なく動作する。 Windows 10 Pro上のHyper-VでWindows 10 Homeをいれてもwsl2 + Docker動かすこともできるし、Azure上のWindows Server 2019上でNested Hyper-Vの上にWindows 10 Homeをいれてもwsl2 + Dockerを動かすことができる。
もしCPU側の仮想化支援を有効にしていない場合、「Windows 10 Home on Hyper-V on Windows Pro」や「Windows 10 Home on Nested Hyper-V on Windows Server 2019 (Azure)」どちらも動作しない。

これが出た場合は、Hyper-VホストマシンでSet-VMProcessorコマンドレットを使って、ExposeVirtualizationExtensionsを $trueにし忘れている。
Set-VMProcessor -VMName "VMName" -ExposeVirtualizationExtensions $true
物理マシンならUEFIでCPUのAdvanceメニューあたりに設定があるはず。