同步檔案共用
同步檔案分享是一種替代的檔案分享機制,它透過使用同步化的檔案系統快取,提供快速且靈活的主機到虛擬機檔案分享,進而提升繫結掛載的效能。

適用對象?
同步檔案分享非常適合以下類型的開發人員
- 擁有大型儲存庫 (repositories) 或單一儲存庫 (monorepos),包含 100,000 個或更多檔案,總計數百 MB 甚至數 GB。
- 正在使用虛擬檔案系統,例如 VirtioFS、gRPC FUSE 和 osxfs,這些系統已無法再很好地與其程式碼庫擴展。
- 經常遇到效能限制。
- 不希望擔心檔案所有權問題,或花時間解決修改多個容器時發生的檔案所有權衝突資訊。
同步檔案分享如何運作?
同步檔案分享的行為就像虛擬檔案分享一樣,但利用高效能、低延遲的程式碼同步引擎,在 Docker Desktop 虛擬機內的 ext4 檔案系統上建立主機檔案的同步快取。如果您在主機或虛擬機的容器中進行檔案系統變更,它會透過雙向同步傳播。
建立檔案分享實例後,任何使用繫結掛載 (bind mount) 指向主機檔案系統上符合指定同步檔案分享位置或其子目錄的容器,都會利用同步檔案分享功能。不符合此條件的繫結掛載將會傳遞給一般的虛擬檔案系統 繫結掛載機制,例如 VirtioFS 或 gRPC-FUSE。
注意同步檔案分享不適用於 Docker Desktop 中 Kubernetes 的
hostPath磁碟區。
重要同步檔案分享在 WSL 或使用 Windows 容器時不可用。
建立檔案分享實例
建立檔案分享實例
- 登入 Docker Desktop。
- 在「設定」中,導航至「資源」部分中的「檔案分享」選項卡。
- 在「同步檔案分享」部分中,選取「建立分享」。
- 選取要分享的主機資料夾。同步檔案分享應該會初始化並可用。
檔案分享需要幾秒鐘來初始化,因為檔案會被複製到 Docker Desktop 虛擬機中。在此期間,狀態指示器會顯示「準備中」。Docker Desktop 儀表板的頁尾也有一個狀態圖示會即時更新您。
當狀態指示器顯示「正在監看檔案系統變更」時,您的檔案即可透過所有標準繫結掛載機制供虛擬機使用,無論是在命令列中使用 -v 或在您的 compose.yml 檔案中指定。
注意當您建立新服務時,將 繫結掛載選項的一致性 (consistency) 設定為
:consistent會繞過同步檔案分享。
提示Docker Compose 可以自動為繫結掛載建立檔案分享。請確保您已登入 Docker 並擁有付費訂閱,並在 Docker Desktop 的設定中啟用了「存取實驗性功能」和「使用 Compose 管理同步檔案分享」。
探索您的檔案分享實例
「同步檔案分享」部分顯示您的所有檔案分享實例,並提供每個實例的實用資訊,包括
- 檔案分享內容的來源
- 狀態更新
- 每個檔案分享正在使用的空間量
- 檔案系統條目計數
- 符號連結的數量
- 哪些容器正在使用此檔案分享實例
選取一個檔案分享實例會展開下拉選單並顯示此資訊。
使用 .syncignore
您可以在每個檔案分享的根目錄中使用 .syncignore 檔案,從您的檔案分享實例中排除本機檔案。它支援與 .dockerignore 檔案相同的語法,並排除及/或重新納入同步路徑。.syncignore 檔案在檔案分享根目錄以外的任何位置都會被忽略。
您可能希望將以下內容新增到 .syncignore 檔案中
- 大型依賴項目目錄,例如
node_modules和composer目錄 (除非您依賴透過繫結掛載來存取它們) .git目錄 (同樣,除非您需要它們)
一般而言,請使用您的 .syncignore 檔案來排除對您的工作流程不重要的項目,尤其是那些同步緩慢或佔用大量儲存空間的項目。
已知問題
對
.syncignore所做的變更不會導致立即刪除,除非重新建立檔案分享。換句話說,由於修改.syncignore檔案而新忽略的檔案會保留在其目前位置,但在同步期間不再更新。檔案分享實例目前每個分享限制約 200 萬個檔案。為了獲得最佳效能,如果您有這種大小的檔案分享實例,請嘗試將其分解為多個分享,對應到個別的繫結掛載位置。
大小寫衝突 (由於 Linux 區分大小寫,而 macOS/Windows 僅保留大小寫) 會在圖形使用者介面 (GUI) 中顯示為「檔案已存在」問題。這些可以被忽略。但是,如果它們持續存在,您可以報告此問題。
同步檔案分享會主動報告臨時性問題,這可能導致在同步期間,圖形使用者介面 (GUI) 中偶爾會出現「衝突」和「問題」指示器。這些可以被忽略。但是,如果它們持續存在,您可以報告此問題。
如果您在 Windows 上從 WSL2 切換到 Hyper-V,Docker Desktop 需要完全重新啟動。
不支援 POSIX 樣式的 Windows 路徑。請避免在 Docker Compose 中設定
COMPOSE_CONVERT_WINDOWS_PATHS環境變數。如果您沒有建立符號連結的正確權限,且您的容器嘗試在您的檔案分享實例中建立符號連結,會顯示「無法建立符號連結」的錯誤訊息。對於 Windows 使用者,請參閱 Microsoft 的 建立符號連結文件,以了解最佳實踐和「建立符號連結」安全性原則設定的位置。對於 Mac 和 Linux 使用者,請檢查您是否對該資料夾具有寫入權限。