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

适用对象
同步文件共享非常适合以下开发者:
- 拥有大型代码库或单体仓库,其中包含10万个或更多文件,总计数百兆字节甚至千兆字节。
- 正在使用虚拟文件系统,如VirtioFS、gRPC FUSE和osxfs,这些文件系统已无法很好地适应其代码库规模。
- 经常遇到性能限制。
- 不想担心文件所有权,或在修改多个容器时花费时间解决冲突的文件所有权信息。
同步文件共享如何工作?
同步文件共享的行为与虚拟文件共享完全相同,但它利用高性能、低延迟的代码同步引擎,在Docker Desktop VM内的ext4文件系统上创建主机文件的同步缓存。如果您在主机或VM的容器中进行文件系统更改,这些更改会通过双向同步传播。
创建文件共享实例后,任何使用绑定挂载指向与指定同步文件共享位置(或其子目录)匹配的主机文件系统位置的容器,都将利用同步文件共享功能。不满足此条件的绑定挂载将传递给正常的虚拟文件系统绑定挂载机制,例如VirtioFS或gRPC-FUSE。
注意Docker Desktop 中的 Kubernetes `hostPath` 卷不使用同步文件共享。
重要提示同步文件共享在WSL或使用Windows容器时不可用。
创建文件共享实例
创建文件共享实例
- 登录到 Docker Desktop。
- 在 设置 中,导航到 资源 部分下的 文件共享 选项卡。
- 在 同步文件共享 部分,选择 创建共享。
- 选择一个要共享的主机文件夹。同步文件共享应该会初始化并可用。
文件共享需要几秒钟来初始化,因为文件会被复制到 Docker Desktop VM 中。在此期间,状态指示器显示 准备中。Docker Desktop 仪表板的页脚也有一个状态图标,会随时更新您。
当状态指示器显示 正在监视文件系统更改 时,您的文件可通过所有标准绑定挂载机制(无论是在命令行中使用 -v 还是在 compose.yml 文件中指定)供 VM 使用。
注意当您创建新服务时,将绑定挂载选项一致性设置为
: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 用户,请检查您对文件夹是否具有写入权限。