近日 Docker Desktop for Mac 发布了全新的 4.6 版本,加入了许多新的更新。
其中最值得引人注目的是引入了一项名为 virtiofs 的实验性功能,该功能明显提高 macOS 用户的文件共享性能,还改进了 macOS 主机和 Docker 虚拟机间文件同步的方式。
根据官方介绍,这些改进使得文件操作时间大幅减少达 98%。
该功能之所以会带来巨大的性能提升是因为开发人员在使用 Symfony 或 React 等技术时,需要编辑位于 macOS 主机上的源代码,同时在 Docker 容器中运行应用程序本身。使用 Docker volumes 在主机和容器之间共享源代码,对位于主机系统上的文件所做的更改必须快速可靠地同步到容器文件系统,以便开发人员优化生产力并获得良好的用户体验。当考虑到现代的依赖关系管理可以很容易地将 10k–100k 的文件引入项目(这线性地增加了性能损失)时,这可能会导致性能下降,因为主机和容器通过卷保持同步,而 virtiofs 的使用,缓解了这个问题。
开发人员在使用 Docker Desktop 4.6 早期预览版时观察到:284 MB 的 MySQL 导入时间从 3 分 16 秒缩短到了 18 秒;而大型程序代码库执行 composer install的时间,从 1 分钟 27 秒缩短 87%,仅剩 11 秒;还有启动单体 Typescript 应用程序的时间缩短 80%,从 1 分 30 秒缩短至 18 秒。
如何启用 virtiofs
注意:virtiofs 仅适用于使用以下 macOS 版本的用户
- macOS 12.2 及以上版本(M1 系列处理器)
- macOS 12.3 及以上版本(英特尔处理器)
在 Docker Desktop 中启用 virtiofs:
- 将 Docker Desktop 升级至 4.6 版本
下载链接:https://docs.docker.com/desktop/mac/release-notes/
- 导航到 “偏好” > “实验性功能”
- 选择 "启用 VirtioFS 加速的目录共享" 选项
- 点击 "应用和重启" 即可;
virtiofs 现在可以在 Docker Desktop for Mac 4.6 版本中访问,并且可供所有用户使用,包括 Docker 个人免费用户以及 Docker Pro、团队和商业付费订阅用户。
目前由于 virtiofs 仍处于实验性阶段,因此在使用过程中会存在部分问题。官方提醒已知存在的问题就是运行 virtiofs 的容器可能会由于权限错误而失败。用户可以将发现的任何问题上报至 Docker Mac 文件系统性能线程中。