同步文件共享

笔记

Docker Desktop 4.27 及更高版本提供同步文件共享。它可供订阅 Docker Pro、Team 或 Business 的客户使用。

同步文件共享是一种替代文件共享机制,它提供快速灵活的主机到虚拟机文件共享,通过使用同步文件系统缓存来增强绑定安装性能。

同步文件共享窗格的图像

它是给谁用的?

同步文件共享非常适合以下开发人员:

  • 拥有包含 100 000 个或更多文件、总计数百兆甚至千兆字节的大型存储库或单一存储库。
  • 正在使用虚拟文件系统,例如 VirtioFS、gRPC FUSE 和 osxfs,这些系统不再能够与其代码库很好地扩展。
  • 经常遇到性能限制。
  • 修改多个容器时,不想担心文件所有权或花时间解决冲突的文件所有权信息。

同步文件共享如何工作?

同步文件共享的行为就像虚拟文件共享一样,但利用高性能、低延迟的代码同步引擎在 Docker Desktop VM 内的 ext4 文件系统上创建主机文件的同步缓存。如果您在主机或虚拟机的容器中进行文件系统更改,则会通过双向同步进行传播。

创建文件共享实例后,任何使用绑定挂载指向主机文件系统上与指定的同步文件共享位置或其中的子目录匹配的位置的容器都会利用同步文件共享功能。不满足此条件的绑定挂载将传递到正常的虚拟文件系统 绑定挂载机制,例如 VirtioFS 或 gRPC-FUSE。

笔记

hostPathDocker Desktop 中的Kubernetes 卷不使用同步文件共享。

重要的

同步文件共享在 WSL 上或使用 Windows 容器时不可用。

创建文件共享实例

创建文件共享实例:

  1. 登录 Docker 桌面。
  2. “设置”中,导航至“资源”部分中的“文件共享”选项卡。
  3. “同步文件共享”部分中,选择“创建共享”图标。
  4. 选择要共享的主机文件夹。同步的文件共享应该初始化并且可用。

当文件被复制到 Docker Desktop VM 中时,文件共享需要几秒钟的时间来初始化。在此期间,状态指示灯显示“正在准备”。 Docker 仪表板的页脚中还有一个状态图标,可让您随时了解最新情况。

当状态指示器显示 正在监视文件系统更改 时,您的文件可通过所有标准绑定安装机制供 VM 使用,无论是-v在命令行中还是在compose.yml文件中指定。

笔记

创建新服务时,将 绑定安装选项一致性设置为:consistent绕过同步文件共享。

提示

Compose 现在可以自动为绑定安装创建文件共享。确保您已通过付费订阅登录 Docker,并在 Docker Desktop 的设置中启用了Access 实验性功能使用 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 路径。避免 COMPOSE_CONVERT_WINDOWS_PATHS在 Docker Compose 中设置环境变量。

反馈和支持

要提供反馈或报告错误,请访问: