同步檔案共用

注意事項

同步檔案共用功能適用於 Docker Desktop 4.27 版和更新版本。適用於擁有 Docker Pro、Team 或 Business 訂閱的客戶。

同步檔案共用是一種替代的檔案共用機制,可提供快速且彈性的主機到虛擬機器檔案共用,並透過使用同步檔案系統快取來提升繫結掛載效能。

Image of Synchronized file shares pane

適用對象

同步檔案共用非常適合下列開發人員:

  • 擁有大型存放庫或單體存放庫,其中包含 100,000 個或更多檔案,總計數百 MB 甚至數 GB。
  • 正在使用虛擬檔案系統,例如 VirtioFS、gRPC FUSE 和 osxfs,這些檔案系統已無法有效地擴展其程式碼庫。
  • 經常遇到效能限制。
  • 不想擔心檔案所有權或花時間解決修改多個容器時檔案所有權資訊衝突的問題。

同步檔案共用的運作方式為何?

同步檔案共用的行為就像虛擬檔案共用一樣,但它利用高效能、低延遲的程式碼同步引擎,在 Docker Desktop 虛擬機器內的 ext4 檔案系統上建立主機檔案的同步快取。如果您在主機或虛擬機器的容器中進行檔案系統變更,它會透過雙向同步進行傳播。

建立檔案共用執行個體後,任何使用指向主機檔案系統上與指定同步檔案共用位置或其子目錄相符位置的繫結掛載的容器,都會利用同步檔案共用功能。不符合此條件的繫結掛載會傳遞至正常的虛擬檔案系統 繫結掛載機制,例如 VirtioFS 或 gRPC-FUSE。

注意事項

Docker Desktop 中的 Kubernetes hostPath 磁碟區不會使用同步檔案共用。

重要

同步檔案共用在 WSL 或使用 Windows 容器時無法使用。

建立檔案共用執行個體

建立檔案共用執行個體的方式如下:

  1. 登入 Docker Desktop。
  2. 在「設定」中,瀏覽至「資源」區段內的「檔案共用」索引標籤。
  3. 在「同步檔案共用」區段中,選取「建立共用」圖示。
  4. 選取要共用的主機資料夾。同步檔案共用應該會初始化並可供使用。

檔案共用需要幾秒鐘的時間才能初始化,因為檔案會複製到 Docker Desktop 虛擬機器中。在此期間,狀態指示器會顯示「正在準備中」。Docker Desktop 儀表板的頁尾中也有一個狀態圖示,可讓您隨時掌握最新資訊。

當狀態指示器顯示「正在監控檔案系統變更」時,您的檔案即可透過所有標準繫結掛載機制供虛擬機器使用,無論是在命令列中使用 -v 或在 compose.yml 檔案中指定。

注意事項

建立新服務時,將 繫結掛載選項一致性 設定為 :consistent 會略過同步檔案共用。

提示

Compose 現在可以自動為繫結掛載建立檔案共用。請確定您已使用付費訂閱登入 Docker,並已在 Docker Desktop 的設定中啟用「存取實驗性功能」和「使用 Compose 管理同步檔案共用」。

探索您的檔案共用執行個體

「同步檔案共用」區段會顯示所有檔案共用執行個體,並提供每個執行個體的實用資訊,包括:

  • 檔案共用內容的來源
  • 狀態更新
  • 每個檔案共用使用的空間量
  • 檔案系統項目計數
  • 符號連結的數量
  • 正在使用檔案共用執行個體的容器

選取檔案共用執行個體會展開下拉式選單並顯示此資訊。

使用 .syncignore

您可以在每個檔案分享的根目錄使用 .syncignore 檔案,以從檔案分享執行個體中排除本機檔案。它支援與 .dockerignore 檔案相同的語法,並從同步中排除和/或重新包含路徑。.syncignore 檔案在檔案分享根目錄以外的任何位置都會被忽略。

您可能想要新增到 .syncignore 檔案的一些範例如下:

  • 大型相依性目錄,例如 node_modulescomposer 目錄(除非您依賴透過繫結掛載來存取它們)
  • .git 目錄(同樣地,除非您需要它們)

一般來說,使用您的 .syncignore 檔案來排除對您的工作流程不重要的項目,尤其是那些同步速度緩慢或會使用大量儲存空間的項目。

已知問題

  • .syncignore 檔案所做的變更不會立即導致刪除,除非重新建立檔案分享。換句話說,由於 .syncignore 檔案中的修改而新忽略的檔案會保留在其目前位置,但在同步期間不再更新。

  • 檔案分享執行個體目前每個分享限制為大約 200 萬個檔案。為了獲得最佳效能,如果您有這麼大的檔案分享執行個體,請嘗試將其分解成多個對應個別繫結掛載位置的分享。

  • 由於 Linux 區分大小寫,而 macOS/Windows 僅保留大小寫,因此大小寫衝突會在 GUI 中顯示為**檔案已存在**問題。這些可以忽略。但是,如果它們持續存在,您可以回報問題。

  • 同步的檔案分享會主動回報暫時性問題,這可能導致在同步期間 GUI 中偶爾出現**衝突**和**問題**指示器。這些可以忽略。但是,如果它們持續存在,您可以回報問題。

  • 如果您在 Windows 上從 WSL2 切換到 Hyper-V,則需要完全重新啟動 Docker Desktop。

  • 不支援 POSIX 樣式的 Windows 路徑。避免在 Docker Compose 中設定 COMPOSE_CONVERT_WINDOWS_PATHS 環境變數。

意見回饋和支援

要提供意見回饋或回報錯誤,請造訪