近日 Docker 更新了 macOS 端的桌面应用,在新版本中引入了一项名为 VirtioFS 的实验性功能,根据官方介绍,开启这项功能后可以使文件共享所花费的时间大幅减少 98%。
要了解这个功能为何带来了大幅的性能提升,还得先了解常见的开发者工作流程。开发者在使用 Symfony 或 React 等技术时,常见的工作流程是编辑位于 macOS 主机上的源代码,同时在 Docker 容器中运行应用程序本身,源代码通过使用 Docker 数据卷在主机和容器之间共享。
因此对位于主机系统上的文件所做的修改必须快速、可靠地同步到容器文件系统中。当考虑到现代依赖项管理可以很容易地将数以万计的文件带入一个项目时,文件共享性能的优劣将影响整个系统性能的发挥,而目前默认所采用的 gRPC-FUSE 就会导致性能不佳。
最近 Docker Desktop for Mac 的变化,尤其是新增了对 VirtioFS 的支持能够缓解了这个问题,给文件系统性能带来了巨大的改善。具体来说,在 Docker Desktop 4.6 上启用 VirtioFS 之后,开发人员在测试中得出了以下结果:
- 完成 MariaDB 导入所需的时间缩短了 98% (从 33 分钟降低至 42 秒)
- 完成 284MB 的 MySQL 导入所需的时间缩短了 90%(从 3 分 16 秒降低至 18 秒);
- 在一个大型代码库中运行 composer install 所需的时间缩短了 87%(从 1 分 27 秒降低至 11 秒);
- 启动一个单体 Typescript 应用程序的时间缩短了 80%(从1 分 30 秒降低至 18 秒);
新版本的这个变化使完成文件系统操作的时间最高缩短了 98%,对于开发者来说,速度上的大幅提升意味着减少了等待文件系统操作完成的时间(或建立特定于项目的特殊方法来提高性能),而有更多的时间专注于项目的开发。
如何启用 VirtioFS
注:VirtioFS 仅适用于使用以下 macOS 版本的用户
- macOS 12.2 及以上版本(M1 系列处理器)
- macOS 12.3 及以上版本(英特尔处理器)
在 Docker Desktop 中启用 VirtioFS:
- 将 Docker Desktop 升级至 4.6 版本,可在此下载;
- 导航到 “偏好” > “实验性功能”
- 选择 "启用 VirtioFS 加速的目录共享" 选项
- 点击 "应用和重启" 即可;
VirtioFS 目前还处于实验性阶段,因此在使用过程中难免会遇到一些问题,用户可以将发现的任何问题上报至 Docker Mac 文件系统性能线程中。目前一个已知的问题就是启用了 VirtioFS 的容器在运行时可能会因权限错误而失败。
本文转自OSCHINA
本文标题:Docker 启用全新功能,文件共享时间大幅减少 98%
本文地址:https://www.oschina.net/news/187169/docker-virtiofs