同步檔案共享

注意

同步檔案共享適用於 Docker Desktop 版本 4.27 及更高版本。它適用於 Docker Pro、Team 或 Business 訂閱的客戶。

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

Image of Synchronized file shares pane

適用於誰?

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

  • 擁有包含 100,000 個或更多檔案、總計數百兆位元組甚至千兆位元組的大型儲存庫或單體儲存庫。
  • 正在使用虛擬檔案系統,例如 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 儀表板的頁尾中也有一個狀態圖示,可讓您保持更新。

當狀態指示器顯示 **監視檔案系統更改** 時,您的檔案將透過所有標準繫結掛載機制提供給虛擬機器,無論是命令列中的 -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 中偶爾出現 **衝突** 和 **問題** 指示器。這些問題可以忽略。但是,如果它們持續存在,您可以報告問題。

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

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

反饋和支援

要提供反饋或報告錯誤,請訪問