在Windows上使用Docker進行開發的現場,大家幾乎都在困擾中。

  • 使用Docker運行WordPress,速度真的慢到驚人。
  • 使用Docker開發Laravel應用,但Vite運行速度太慢。
  • 即使被要求使用Linux,公司的電腦是Windows啊!Excel也必須用。

這次我們將簡單解決這些問題。(在Windows 11環境下)

TL;DR

從Windows上的Ubuntu使用Docker。

  • 在Windows上安裝WSL。(只需一個命令)
  • 在Windows上安裝Ubuntu。(在商店中點擊安裝)
  • 將專案放在Ubuntu用的資料夾中。(使用檔案總管正常操作)
  • 使用Visual Studio Code打開專案,然後啟動Docker!

原理(我們要做什麼)

當在Windows上使用Docker架設虛擬Linux伺服器並運行WordPress時,實際上是利用WSL(Windows Subsystem for Linux)這個虛擬機的架構。

目前使用的WSL2非常優秀且運行迅速。但它有一個弱點,就是慢,所以我們需要避開這個弱點。

WSL2的弱點

在WSL2中,主機Windows的檔案系統(NTFS)和虛擬機的Linux檔案系統(ext4)之間的數據交換會承受異常的負擔,這是一個缺點。

用圖來表示就是這樣。(嚴格來說這不是完全正確的圖)

image.png

改善後的概念

因此,我們打算在WSL2內部安裝Ubuntu,然後從那裡使用Docker。

用圖來表示的話,就是這樣。

image.png

所需安裝項目

Docker Desktop

如果尚未安裝Docker Desktop,請從Docker網站下載並安裝Docker Desktop。(Intel CPU選擇AMD64。AMD CPU也是AMD64。僅在ARM的情況下選擇ARM64)

image.png

這時候請確保使用WSL2。

image.png

安裝後重啟,接下來會要求你更新WSL,隨便按個按鍵繼續即可。

image.png

然後按照指示繼續進行。

如果出現「WSL太舊了」的錯誤,請參考以下WSL2的安裝指南來更新WSL。

WSL2

打開PowerShell確認WSL是否已安裝。

wsl -v

如果尚未安裝WSL,則會顯示以下內容,請按任意按鍵繼續安裝。

image.png

如果已經安裝WSL,則會顯示版本。

image.png

更新WSL。

wsl --update

Ubuntu

在WSL2上安裝Ubuntu只需在Microsoft Store中點擊「獲取」。雖然會有幾個版本的Ubuntu,但建議選擇僅顯示為「Ubuntu」的那個。

image.png

安裝完成後打開它。

image.png

會進入預設用戶設置界面。

image.png

這樣就可以從PowerShell操作Ubuntu了。

image.png

開發專案並啟動

在Ubuntu內創建專案用資料夾

通常將專案放在我的文件夾下(進行Git克隆)的位置,但將專案放置在Ubuntu的用戶資料夾內。在Linux中,/home/[用戶名]為用戶資料夾。

例)
以前:C:\Users\[用戶名]\Documents\DockerProjects\[專案資料夾]
這次:\\wsl.localhost\Ubuntu\home\[用戶名]\DockerProjects\[專案資料夾]

在檔案總管中會出現Linux,從那裡尋找會更方便。如果選擇了Ubuntu的版本,其路徑會略有不同。

image.png

image.png

放置專案

這次我們來克隆Laravel練習用資料庫

在PowerShell中進入Ubuntu,

image.png

移動到~/DockerProjects(即/home/[用戶名]/DockerProjects)並克隆資料庫。

git clone https://github.com/hitotch/laravel11-sample-ja.git

image.png

使用Visual Studio Code打開專案

和往常一樣打開資料夾,

image.png

打開\\wsl.localhost

image.png

選擇已安裝的專案資料夾。

image.png

打開終端機,然後再打開Ubuntu的終端機。

image.png

從Ubuntu啟動Docker容器。

啟動Docker容器。

如果出現Docker的WSL整合需開啟的錯誤,請在Docker中開啟設定。

image.png

image.png

這樣就可以快速運行了!

image.png

順便提一下

這次的所有螢幕截圖都是在運行於KVM的Linux Mint上進行的Windows 11。

換句話說,這樣經歷了雙重虛擬化。即使如此,仍然運行得非常流暢。

  Ubuntu & Docker內的Linux 
  -虛擬化- 
  Windows 11
  -虛擬化- 
 Linux Mint

參考網站

Windows 的 Docker 環境速度優化方法


原文出處:https://qiita.com/hitotch/items/1a2505496619c71c70ff

關於作者
精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝9   💬8   ❤️13
429
🥈
我愛JS
📝1   💬6   ❤️4
88
🥉
酷豪
📝1   ❤️1
51
#4
AppleLily
📝1   💬4   ❤️1
39
#5
💬3  
10
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次