最佳實踐
請務必使用最新版本的 WSL。您至少必須使用 WSL 2.1.5 版本,否則 Docker Desktop 可能無法如預期般運作。測試、開發和文件皆基於最新的核心版本。較舊版本的 WSL 可能導致:
- Docker Desktop 定期當機或在升級時發生問題
- 透過 SCCM 進行部署失敗
vmmem.exe耗盡所有記憶體- 網路過濾規則被全域套用,而非針對特定物件
- 容器出現 GPU 故障
若要獲得最佳的檔案系統效能,在使用綁定掛載(bind-mount)檔案時,建議將原始碼與其他需要掛載至 Linux 容器的資料儲存於 Linux 檔案系統中。例如,請在 Linux 檔案系統中使用
docker run -v <host-path>:<container-path>,而非 Windows 檔案系統。您也可以參考來自 Microsoft 的建議。- 只有當原始檔案儲存在 Linux 檔案系統中時,Linux 容器才能接收到檔案變更事件(即「inotify 事件」)。例如,某些 Web 開發工作流程會依賴 inotify 事件來實現檔案變更後的自動重新載入。
- 當檔案從 Linux 檔案系統進行綁定掛載時,效能會遠高於從 Windows 主機進行遠端掛載。因此,請避免使用
docker run -v /mnt/c/users:/users,其中/mnt/c是從 Windows 掛載的目錄。 - 建議您改為從 Linux shell 使用類似
docker run -v ~/my-project:/sources <my-image>的指令,其中~會由 Linux shell 展開為$HOME。
如果您擔心
docker-desktop-data發行版的容量大小,請查看內建於 Windows 中的 WSL 工具。- Docker Desktop 4.30 及更高版本的安裝不再依賴
docker-desktop-data發行版;Docker Desktop 現在會建立並管理自己的虛擬硬碟 (VHDX) 進行儲存。(但請注意,如果舊版軟體已建立docker-desktop-data,Docker Desktop 仍會繼續使用它)。 - 自 4.34 版本起,Docker Desktop 會自動管理託管的 VHDX 大小,並將未使用的空間歸還給作業系統。
- Docker Desktop 4.30 及更高版本的安裝不再依賴
如果您擔心 CPU 或記憶體的使用情況,可以針對 WSL 2 工具虛擬機 配置記憶體、CPU 和 Swap 大小的限制。