Windows HomeエディションでDocker Desktop for Windowsを動かすまで

2020年9月22日

今まではDocker Desktop for Windowsを動かすためには、Windows professionalエディションが必要でした。 Windows Home では、Windows ネイティブの Hyper-V 仮想化を使用できないので、代わりにDocker Toolboxをインストールして使っていました。 Docker Toolboxの仕組みをザックリ説明すると、Linuxの仮想環境をまず用意して、そのうえでDockerを動かすというような感じです。
しかし、WSL2( Windows Subsystem for Linux )がリリースされたことにより、Docker DesktopがWindows Homeエディションでも使えるようになりました。

以下を参考にしつつ、実際に動かすまでやっていきたいと思います。

https://www.atmarkit.co.jp/ait/articles/2007/01/news013.html

WSL2( Windows Subsystem for Linux )に対応したDocker Desktop for Windows

ハードウェア要件

以下の条件を満たす必要があるようです。
一つずつ確認方法を見ていきますが、 ハードウェア仮想化(Virtualization) だけはよくわかりませんでした。

  • 第2レベルアドレス変換拡張(SLAT)とVMモニターモード拡張(Intel CPUのVT-c)に対応したx64プロセッサ
  • 4GB以上のメモリ
  • BIOS/ファームウェアのレベルでハードウェア仮想化(Virtualization)の設定が有効

確認方法

第2レベルアドレス変換拡張(SLAT)とVMモニターモード拡張(Intel CPUのVT-c)に対応したx64プロセッサ

Windows PowerShellを起動する

systeminfoと打ち込むと、その名の通りシステム情報がバーっと出てきます。

スクロールしていくと、以下の項目があります。
以下のように、すべての項目がはいになっていれば、要件を満たしているようです。

4GB以上のメモリ

こちらも上記の方法で確認できます。

BIOS/ファームウェアのレベルでハードウェア仮想化(Virtualization)の設定が有効かどうかの確認

タスクマネージャーのパフォーマンスから確認できます。赤枠の部分が有効になっていれば大丈夫。

と思っていた時期が私にもありました。
この設定が有効ではなかったためにエラーが発生しましたが、解決策も後ほど記載していきます。

WSLを有効化し、WSL 2を既定で利用するための設定

Windowsの機能の有効化または無効化からLinux用Windowsサブシステムにチェックを入れる。

Linuxカーネルの更新版をダウンロードして実行します。

WSLの既定をWSL 1からWSL 2に変更する

Windows PowerShell(管理者)を開き、以下のコマンドを実行する。

wsl –set-default-version 2(以下の画像ではUbuntuとありますが、これはエラーが出たタイミングのものと異なるためです。ただ、エラーの内容としては一緒でした。)

画像に alt 属性が指定されていません。ファイル名: image-20-1024x108.png

仮想マシンプラットフォーム機能を有効にして、BIOSで仮想化が有効になっていることを確認してください。

とありますが【BIOS/ファームウェアのレベルでハードウェア仮想化(Virtualization)の設定が有効かどうかの確認】でも確認したはず。そこで確認したものとは違うのか?という疑問を抱きつつ、調査を開始しました。
ちなみに、BIOSに入って当該設定がEnableになっていることは確認しました。

他のサイトも参考にして設定していく

上記エラーは、結局のところWSLの設定がうまくいっていないということだとわかります。なので、こちらを参考にWSL2の設定をしていきました。

https://qiita.com/kekenonono/items/14b725ce3d00cd5281ec

Microsoft-Windows-Subsystem-LinuxとVirtualMachinePlatformを設定

以下を実行することで、【 仮想マシンプラットフォーム機能を有効にして、BIOSで仮想化が有効になっていることを確認してください。 】のエラーが解消しました。注意点としては、こちらを実行した後は再起動が必要ということ。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

ディストリビューションのインストール

ここからは、Docker Desktopで必要なのかはよくわからなかったのですが、WSL2を使っていくうえで必要そうだったのでやっていきました。
以下サイトを参考にインストールしました。

https://qiita.com/kekenonono/items/1ddbb5a1125d496c0010#2-%E3%83%87%E3%82%A3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%93%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

インストール後、ubuntu.exeを実行

サポートされていないコンソール設定です。というようなメッセージが出ました。またまたググって、設定を変更すれば大丈夫ということがわかったので設定を変更していきます。

コマンドプロンプトを起動する。

タイトルバー周辺で右クリックしてコンテキストメニューを出し、プロパティを選択する。

レガシーコンソールを使用するのチェックをはずす。

この後再起動が必要とのこと。

この後、再度ubuntu.exeを実行すると、正常に起動するようになりました。

ディストリビューションのバージョンをWSL2に変更する

まずは
wsl -lで以下が出ることを確認する。

ここでやっと、再度
wsl –set-version Ubuntu 2
を実行する。
しかし、またまたエラーが発生。

あ、そういえば再起動してなかったので再起動。
すると、うまくいきました。

再度 WSL 2 を既定のアーキテクチャにする

再度、以下のコマンドを実行する。

wsl –set-default-version 2

別段エラーもなく設定を変更することに成功しました。

Docker Desktopをインストール

やっとこさインストールできると思い、以下のURLからDocker Desktop Installer.exeをダウンロードして実行します。

Window 10 Homeのバージョンが要求を満たしていない?

なんと、またエラーが出ました。

しかし、Windows Updateを見ると最新の状態です と出ている。

Windows 10 Home を19018にアップデートすればいいということはわかったので、調べてみると以下からインストーラーをゲットできることがわかった。
それにしても、上記で表示されているWindows Updateの最新の状態って何がどう最新なんだろう。安定版という意味での最新なのかな。

アップデートアシスタントを使用してWindowsをアップデートする。

https://www.microsoft.com/en-us/software-download/windows10

ダウンロードしたインストーラーを実行します。
更新をスタートする前に、更新によって発生する問題を確認しておくのがいいかもしれません。
インストールすると問題なくDocker Desktopのインストールが始まりました。

Dockerが起動した

無事インストールが完了したので、Docker Desktopを立ち上げてみます。
ちゃんと立ち上がっていました。
どうせなので、以下のチュートリアルもやってみます。
右側にpower shellが立ち上がっているので、そこでいわれたとおりに
git clone ~をやります。

イメージをビルドします。
色々とダウンロードされてきます。

なんかエラー出てる。
過去にdocker使ってごにょごにょしていた関係かな?ということでスルーしておく。


コンテナーを起動してみる。

起動した状態で
http://localhost:80を開くとhttp://localhost/tutorial/が開かれます。

というわけで、色々とハマりながらもDocker Desktop for Windowsを動かすことができました。