はじめに
Windows 10 ProではHyper-Vなどを利用することでDockerを使用することができるものの、Windows 10 HomeではHyper-Vの機能は搭載されておらず、Dockerを動作させるにはVirtual Boxなどを使う方法がメインであり、セッティングが複雑であった。しかし、Windows Version 20H1 (2004)から追加された機能WSL2を使うことで、Windows 10 Homeでも容易にDocker環境を作成できるようになった。以下にその方法を示す。
ちなみに使用したDocker DesktopとWindows 10 Homeのバージョンは以下の通りである。
- Docker Desktop:3.1.0
- Windows 10 Home:2004
System Requirements
Docker Docsの情報によれば、Docker Desktopの動作必要環境は以下の通りである。
System Requirements
Windows 10 Home machines must meet the following requirements to install Docker Desktop:
- Install Windows 10, version 1903 or higher.
- Enable the WSL 2 feature on Windows. For detailed instructions, refer to the Microsoft documentation.
- The following hardware prerequisites are required to successfully run WSL 2 on Windows 10 Home:
- 64 bit processor with Second Level Address Translation (SLAT)
- 4GB system RAM
- BIOS-level hardware virtualization support must be enabled in the BIOS settings. For more information, see Virtualization.- Download and install the Linux kernel update package.
ただ、WSL2やLinuxカーネルのインストールについてはDocker Desktopのインストールとともに行えるので、この時点ではまず、
- Windows 10のバージョン
- CPUのVirtualizationの有効化
- (ほとんど該当するであろうが)Windowsが64 bit版か、メモリが4GB以上か
の確認をしなければならない。
Windows 10 のバージョン
Windows 10 のバージョンはスタートメニュー(右クリック) > システム
から確認可能。
上の画像のように基本的に更新をしていれば必要バージョンである1903より上になっているはずである。
CPU Virtualization (要チェック)
スタートメニュー(右クリック) > タスクマネージャー > パフォーマンスタブ
から確認可能。
問題はこの中の項目の仮想化
が有効でないといけないのにもかかわらず、上の画像のように無効となっているケースがあることである。この場合、有効化作業が必要である。
CPU Virtualization checking
まずそもそも仮想化に適応しているCPUなのかを確認しよう。
- CPUがIntel製なら「インテル®プロセッサー識別ユーティリティー」をダウンロード
- CPUがAMD製なら「AMD V検知ユーティリティ」をダウンロード (直接リンクなので注意)
手順はインストーラーに沿って行えば問題ない。詳細を知りたい場合は、「[バーチャライゼーション(VT)を有効にする方法] (https://support.bluestacks.com/hc/ja/articles/115003174386-PCでバーチャライゼーション-VT-を作動させるには-)」の「**PCがバーチャライゼーションに対応しているかの確認方法**」を参照。
参考のために載せるが、私のPCはAMD製のCPUのため、以下の表示が出た。
表示の通りバーチャライゼーション無効になっている状態であるが、BIOSで有効化すれば仮想化は可能であるという意味に捉えられる。
仮想化が可能なCPUであることが判明したのならば、BIOSでVirtualizationの設定を有効化すれば良い。BIOS設定といえば特定のキーを押しながらPCを起動させ設定画面に移動する方法もあるが、Windows 10では設定 > 更新とセキュリティ > 回復
から、PCの起動をカスタマイズ
するという方法にて再起動後の設定ができ、容易にBIOSに入ることができる。これについても詳細は、「バーチャライゼーション(VT)を有効にする方法」の「無効状態のバーチャライゼーションを有効にする方法」を参照。
BIOSの設定まで来た場合PC端末によってそれぞれやり方異なるため、そこからは自身にて調べてもらいたい。基本的には、
- Intel製CPUの場合は
CPU Configuration > Intel Virtualization Technology
の設定をDisableからEnableへ変更 - AMD製CPUの場合は
CPU Configuration > SVM Mode
の設定をDisableからEnableへ変更
すれば良い。
BIOSにて仮想化の設定を有効化して再起動すれば、先程のスタートメニュー(右クリック) > タスクマネージャー > パフォーマンスタブ
のところで、下の画像のように仮想化
の項目に有効の表示が出る。
Docker Desktop
ようやくDockerのSystem Requirementsはカバーできたので、ここから先はDocker Desktopをインストールする。
Docker Desktop for Windowsをダウンロードし起動。表示手順に沿ってそのままインストール作業を進めれば問題ない。
再起動後、WSL2の設定をまだ行っていないため、WSL 2 installation is incomplete.
というウィンドウが出現する。
RestartもCancelも押さず、そこにあるURL (https://aka.ms/wsl2kernel) へ移動し、「手順 4 - Linux カーネル更新プログラム パッケージをダウンロードする」に従う。
「x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージ」をダウンロードしてインストール。
インストール後、Windows PowerShellを開き、WSL2を既定のバージョンとして設定するために以下のコマンドを入力。
wsl --set-default-version 2
設定後、Microsoft Storeから必要な Linuxディストリビューションをダウンロード&インストールする。今回はUbuntu 20.04 LTS を選択した。
インストール完了後通知文が出るので、そこからUbuntuを起動 (もしくはMictosoft Storeやスタートメニューから起動) 。セットアップを行う。
この際、
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0xc03a001a
Error: 0xc03a001a ???????????????????????????????????????????????????
といったエラーが出た場合はディストリビューションのディレクトリの圧縮を解除すれば良いらしい。私はエラーが出たので、「[WSL2のインストール時にWslRegisterDistribution failed with error: 0xc03a001aで失敗するときの対処法] (https://qiita.com/kuryus/items/27a7206c64eca7ba710b)」を参考に圧縮を解いたら、問題なくインストール画面に移行できたため、そのまま`username`と`password`を決めてセットアップ完了。
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
Linux ディストリビューションのセットアップまで終わったら、先程のDockerのウィンドウ、WSL 2 installation is incomplete.
からRestartボタンを押す。そうするとDocker for Desktopが再起動され、最終的にDocker is runningの表示まで出れば完了。dockerコマンドも動き、getting-startedもできるはず。
おわりに
このようにWindows 10 Homeにても容易な方法にてDockerを導入することが可能となった。1つ気をつけるポイントとしては、CPUの仮想化が有効になっているか否か、という部分であるように感じられる。Windowsバージョンが必要バージョンを満たしているのにも関わらず上手くDockerの導入ができない場合には、一度CPU Virtualizationの確認を行うと良いかもしれない。
参考
- バーチャライゼーション(VT)を有効にする方法
- Windows 10用Windows Subsystem for Linuxのインストールガイド
- [WSL2のインストール時にWslRegisterDistribution failed with error: 0xc03a001aで失敗するときの対処法] (https://qiita.com/kuryus/items/27a7206c64eca7ba710b)