Windows 10 Home家用版安裝Hyper-V與Docker

公司一開始配的電腦是Acer的套裝電腦,裡面搭配的是Windows 10 Home版,作為一個開發者,Home版本的功能實在是不太符合需求,因為預設應該是沒有Hyper-V功能,如果要安裝Docker的話,也只能安裝Client工具…

不太想要動到OS重灌這一招,想到之前似乎有試過(看到)在Windows 10 Home版安裝Hyper-V與WSL,不過因為很久沒有寫部落格記錄,有些問題解決之後就沒有記錄,所以趁著這次解決這個問題並且將部落格從幾次亂搞之後最近放到Google Cloud Run上面執行,一併將這些操作記錄下來。

首先,Windows 10 Home版打開控制台「程式和功能」中的「Windows 功能」應該不會有「Hyper-V平台」、「適用於 Linux 的 Windows 子系統」兩個選項。

Windows 10 Home家用版Windows功能

Windows 10 Hyper-V System Requirements的頁面說明中也有下面這段,明確表明Windows 10 Home的版本不能安裝。

The Hyper-V role cannot be installed on:

  • Windows 10 Home
  • Windows 10 Mobile
  • Windows 10 Mobile Enterprise

不過這個其實有秘技可以讓Hyper-V安裝在Windows 10 Home,只需要將下面這段指令貼在記事本上,並且以.bat的副檔名儲存後透過管理員權限執行即可。

pushd “%~dp0”
dir /b %SystemRoot%\servicing\Packages*Hyper-V*.mum >hyper-v.txt
for /f %%i in (‘findstr /i . hyper-v.txt 2^>nul’) do dism /online /norestart /add-package:”%SystemRoot%\servicing\Packages\%%i”
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL
pause

如果也想要安裝Container功能的話,同樣將下面這段指令以.bat儲存後透過管理員權限執行。

pushd “%~dp0”
dir /b %SystemRoot%\servicing\Packages*containers*.mum >containers.txt
for /f %%i in (‘findstr /i . containers.txt 2^>nul’) do dism /online /norestart /add-package:”%SystemRoot%\servicing\Packages\%%i”
del containers.txt
Dism /online /enable-feature /featurename:Containers -All /LimitAccess /ALL
pause

執行完之後重新開機應該就可以找到Hyper-V的功能了,不過到這裡為止,仍然無法安裝Docker。
或者是說,如果不是Windows 10 Home搭配Docker使用WSL2(Windows Subsystem for Linux, WSL),那麼就無法使用Docker。

再更精確一點的說法,就是Docker需要Hyper-V與Container的功能,如果是Windows Home安裝WSL2再加上Docker,那麼就是在WSL2裡面執行Container,跑的是Linux,如果只需要執行Linux的Container是OK的。

不過若是需要在Windows Container和Linux Container之間切換的話,Windows 10 Home版本一般來說是無法達成,而且Docker搭配WSL2跑Linux Container若是使用到Docker-Compose的話,可能還會有一點點問題…

所以為了在Windows 10 Home的版本正常執行Docker(Hyper-V都透過秘技安裝了,應該還有秘技可以讓Docker正常在Windows 10 Home版本安裝與執行吧!),所以我繼續在網路上搜尋可能的秘技,想要解決在Windows 10 Home版本使用Docker的問題。

這次的秘技不需要再執行指令安裝什麼東西,需要的是執行regedit編輯Windows登錄檔,透過將「HKLM\Software\Microsoft\Windows NT\CurrentVersion」底下的EditionID從「Core」更改為「Professional」,改完之後不需要重新開機,就可以執行最新版本的Docker安裝檔。

將EditionID從「Core」更改為「Professional」,改完之後不需要重新開機,就可以執行最新版本的Docker安裝檔

上面的這個修改Windows登錄檔的位置要記下來,或者是寫成一個指令檔。
因為Windows過一段時間(不知多久)會自己將更改的值改回「Core」(如果你改完忘了改回來),尤其是Windows Update完之後。

這會有什麼影響呢?

EditionID為「Core」的情況下無法切換Container

會影響的就是Docker切換Windows Container與更新Docker版本,如果Docker發現新的版本,但是當你要執行更新安裝的時候發現有問題,可以試著將EditionID再改為「Professional」,之後應該就可以更新了。
註:要透過Docker結合WSL2執行Linux Container必須是切換到Linux Container模式才行。
(不過也可以選擇不要在Windows下操作Docker跑Linux Container,直接在WSL2裡面安裝獨立的Docker)參考來源:

參考來源

發佈留言

%d 位部落客按了讚: