近日 Docker 更新了 macOS 端的桌面應用,在新版本中引入了一項名為 VirtioFS 的實驗性功能,根據官方介紹,開啟這項功能後可以使檔案共用所花費的時間大幅減少 98%。
要了解這個功能為何帶來了大幅的效能提升,還得先了解常見的開發者工作流程。開發者在使用 Symfony 或 React 等技術時,常見的工作流程是編輯位於 macOS 主機上的原始碼,同時在 Docker 容器中執行應用程式本身,原始碼通過使用 Docker 資料卷在主機和容器之間共用。
因此對位於主機系統上的檔案所做的修改必須快速、可靠地同步到容器檔案系統中。當考慮到現代依賴項管理可以很容易地將數以萬計的檔案帶入一個專案時,檔案共用效能的優劣將影響整個系統效能的發揮,而目前預設所採用的 gRPC-FUSE 就會導致效能不佳。
最近 Docker Desktop for Mac 的,尤其是新增了對 VirtioFS 的支援能夠緩解了這個問題,給檔案系統效能帶來了巨大的改善。具體來說,在 Docker Desktop 4.6 上啟用 VirtioFS 之後,開發人員在測試中得出了以下結果:
- 完成 MariaDB 匯入所需的時間縮短了 98% (從 33 分鐘降低至 42 秒)
- 完成 284MB 的 MySQL 匯入所需的時間縮短了 90%(從 3 分 16 秒降低至 18 秒);
- 在一個大型程式碼庫中執行
composer install
所需的時間縮短了 87%(從 1 分 27 秒降低至 11 秒); - 啟動一個單體 Typescript 應用程式的時間縮短了 80%(從1 分 30 秒降低至 18 秒);
新版本的這個變化使完成檔案系統操作的時間最高縮短了 98%,對於開發者來說,速度上的大幅提升意味著減少了等待檔案系統操作完成的時間(或建立特定於專案的特殊方法來提高效能),而有更多的時間專注於專案的開發。
如何啟用 VirtioFS
注:VirtioFS 僅適用於使用以下 macOS 版本的使用者
- macOS 12.2 及以上版本(M1 系列處理器)
- macOS 12.3 及以上版本(英特爾處理器)
在 Docker Desktop 中啟用 VirtioFS:
- 將 Docker Desktop 升級至 4.6 版本,可在此;
- 導航到 「偏好」 > 「實驗性功能」
- 選擇 "啟用 VirtioFS 加速的目錄共用" 選項
- 點選 "應用和重新啟動" 即可;
VirtioFS 目前還處於實驗性階段,因此在使用過程中難免會遇到一些問題,使用者可以將發現的任何問題上報至 Docker Mac 檔案系統效能執行緒中。目前一個已知的問題就是啟用了 VirtioFS 的容器在執行時可能會因許可權錯誤而失敗。