以下の内容はhttps://tech.guitarrapc.com/entry/2020/04/21/034236より取得しました。


Windows 10 Home で WSL2 と Docker Desktop for Windows を動かす

開発環境ではDockerでDBや各種バックエンドを動かすことが多いのですが、WFHが広がる中で自宅がWindows 10 HomeでDocker Desktop for Windows起動できないんだけど、何か手がないかと相談があったりなかったり。

以前試したときは問題なかったのですが、改めて最新の状況で試します。 また、wsl2の仕組みから言ってHyper-VでホストしたWindows 10 Homeでも動作するはずなのでそこも確認です。

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について

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 前の Windows 10 バージョンは 1909

Insider Preview を Slowring で有効にする

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

Insider PreviewをSlow Ring で有効化

適当に Microsoft アカウントを作成

Insider Preview の有効化 (ここでずっと変わらない場合がある)

Slow Ring を選択

Windows Update で Windows 10 2004 にあげる

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

Windows Update を実行して Windows 10 Version 2004 にアップデート

これでWindows 10 Version 2004となる。

Windows 10 バージョン 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

Windows 10 の機能を有効化

再起動される。

再起動される

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です。

リンクからDocker アカウントなしでEdgeをダウンロード

Edge なら Windows 10 Home でも 19018+ でインストール可能

もしWindows Updateをかけていないと、Docker Desktopのインストールがコケる。

Docker Desktop requires Windows 10 Pro/Enterprise (15063+) or Windows 10 Home (19018+)

Windows 10 2004になっていれば、WSL2の有効化を効かれるのでそのままOK。

Enable WSL 2 Features は必ず有効にする

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

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

wsl2 の有効化

Linuxカーネル更新プログラムパッケージを入れる。

https://aka.ms/wsl2kernelのダウンロードから。

これでwsl2が有効になる。

PCを再起動して、docker-desktopが見えるようになる。

$ wsl -l

左が Windows 10 Home on Hyper-V on Windows Server 2019 on Azure VM、右が Windows 10 Home on Hyper-V on Windows 10 Pro

ついでにwsl2をデフォルトバージョンにしておく。

$ wsl --set-default-version 2

Docker の実行確認

実行できるか確認する

docker run --rm hello-world

どちらの環境でも docker run が可能

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

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

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 や 物理マシンの Windows 10 Home で Dockerの起動が失敗する例

これが出た場合は、Hyper-VホストマシンでSet-VMProcessorコマンドレットを使って、ExposeVirtualizationExtensionsを $trueにし忘れている。

Set-VMProcessor -VMName "VMName" -ExposeVirtualizationExtensions $true

物理マシンならUEFIでCPUのAdvanceメニューあたりに設定があるはず。




以上の内容はhttps://tech.guitarrapc.com/entry/2020/04/21/034236より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14