同步檔案共享

訂閱: 專業版 團隊版 企業版

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

Image of Synchronized file shares pane

適用物件

同步檔案共享非常適合以下開發者:

  • 擁有大型程式碼庫或單體倉庫,其中包含10萬個或更多檔案,總計數百兆位元組甚至千兆位元組。
  • 正在使用虛擬檔案系統,如VirtioFS、gRPC FUSE和osxfs,這些檔案系統已無法很好地適應其程式碼庫規模。
  • 經常遇到效能限制。
  • 不想擔心檔案所有權,或在修改多個容器時花費時間解決衝突的檔案所有權資訊。

同步檔案共享如何工作?

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

建立檔案共享例項後,任何使用繫結掛載指向與指定同步檔案共享位置(或其子目錄)匹配的主機檔案系統位置的容器,都將利用同步檔案共享功能。不滿足此條件的繫結掛載將傳遞給正常的虛擬檔案系統繫結掛載機制,例如VirtioFS或gRPC-FUSE。

注意

Docker Desktop 中的 Kubernetes `hostPath` 卷不使用同步檔案共享。

重要提示

同步檔案共享在WSL或使用Windows容器時不可用。

建立檔案共享例項

建立檔案共享例項

  1. 登入到 Docker Desktop。
  2. 設定 中,導航到 資源 部分下的 檔案共享 選項卡。
  3. 同步檔案共享 部分,選擇 建立共享
  4. 選擇一個要共享的主機資料夾。同步檔案共享應該會初始化並可用。

檔案共享需要幾秒鐘來初始化,因為檔案會被複制到 Docker Desktop VM 中。在此期間,狀態指示器顯示 準備中。Docker Desktop 儀表板的頁尾也有一個狀態圖示,會隨時更新您。

當狀態指示器顯示 正在監視檔案系統更改 時,您的檔案可透過所有標準繫結掛載機制(無論是在命令列中使用 -v 還是在 compose.yml 檔案中指定)供 VM 使用。

注意

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

提示

Docker 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 環境變數。

  • 如果您沒有建立符號連結的正確許可權,並且您的容器嘗試在檔案共享例項中建立符號連結,則會顯示 無法建立符號連結 錯誤訊息。對於 Windows 使用者,請參閱 Microsoft 的 建立符號連結文件,瞭解最佳實踐和 建立符號連結 安全策略設定的位置。對於 Mac 和 Linux 使用者,請檢查您對資料夾是否具有寫入許可權。