在Windows上使用Docker進行開發的現場,大家幾乎都在困擾中。
這次我們將簡單解決這些問題。(在Windows 11環境下)
從Windows上的Ubuntu使用Docker。
當在Windows上使用Docker架設虛擬Linux伺服器並運行WordPress時,實際上是利用WSL(Windows Subsystem for Linux)這個虛擬機的架構。
目前使用的WSL2非常優秀且運行迅速。但它有一個弱點,就是慢,所以我們需要避開這個弱點。
在WSL2中,主機Windows的檔案系統(NTFS)和虛擬機的Linux檔案系統(ext4)之間的數據交換會承受異常的負擔,這是一個缺點。
用圖來表示就是這樣。(嚴格來說這不是完全正確的圖)
因此,我們打算在WSL2內部安裝Ubuntu,然後從那裡使用Docker。
用圖來表示的話,就是這樣。
如果尚未安裝Docker Desktop,請從Docker網站下載並安裝Docker Desktop。(Intel CPU選擇AMD64。AMD CPU也是AMD64。僅在ARM的情況下選擇ARM64)
這時候請確保使用WSL2。
安裝後重啟,接下來會要求你更新WSL,隨便按個按鍵繼續即可。
然後按照指示繼續進行。
如果出現「WSL太舊了」的錯誤,請參考以下WSL2的安裝指南來更新WSL。
打開PowerShell確認WSL是否已安裝。
wsl -v
如果尚未安裝WSL,則會顯示以下內容,請按任意按鍵繼續安裝。
如果已經安裝WSL,則會顯示版本。
更新WSL。
wsl --update
在WSL2上安裝Ubuntu只需在Microsoft Store中點擊「獲取」。雖然會有幾個版本的Ubuntu,但建議選擇僅顯示為「Ubuntu」的那個。
安裝完成後打開它。
會進入預設用戶設置界面。
這樣就可以從PowerShell操作Ubuntu了。
通常將專案放在我的文件夾下(進行Git克隆)的位置,但將專案放置在Ubuntu的用戶資料夾內。在Linux中,/home/[用戶名]
為用戶資料夾。
例)
以前:C:\Users\[用戶名]\Documents\DockerProjects\[專案資料夾]
這次:\\wsl.localhost\Ubuntu\home\[用戶名]\DockerProjects\[專案資料夾]
在檔案總管中會出現Linux,從那裡尋找會更方便。如果選擇了Ubuntu的版本,其路徑會略有不同。
這次我們來克隆Laravel練習用資料庫。
在PowerShell中進入Ubuntu,
移動到~/DockerProjects
(即/home/[用戶名]/DockerProjects
)並克隆資料庫。
git clone https://github.com/hitotch/laravel11-sample-ja.git
和往常一樣打開資料夾,
打開\\wsl.localhost
,
選擇已安裝的專案資料夾。
打開終端機,然後再打開Ubuntu的終端機。
啟動Docker容器。
如果出現Docker的WSL整合需開啟的錯誤,請在Docker中開啟設定。
這樣就可以快速運行了!
這次的所有螢幕截圖都是在運行於KVM的Linux Mint上進行的Windows 11。
換句話說,這樣經歷了雙重虛擬化。即使如此,仍然運行得非常流暢。
Ubuntu & Docker內的Linux
-虛擬化-
Windows 11
-虛擬化-
Linux Mint