macOS 上的 Linux 虚拟化选择: Parallels Desktop vs Docker

在 macOS 上运行 Linux 系统有两种方式:(1) 使用商业虚拟机软件 (如 Parallels Desktop) ; (2) 使用 Docker 虚拟化技术。哪种方式在性能、内存、I/O 上更优呢?

我们知道,Docker 在 Linux 上利用了 Linux 原生支持的容器方式实现资源和环境的隔离,直接利用宿主内核,性能接近原生。然而,在 macOS 上却仍然需要虚拟化的技术。早期的 Docker 干脆直接在开源的 VirtualBox 中构建虚拟机,性能低下。后期的 Docker 基于轻量化的虚拟化框架 HyperKit 开发,该框架又是 macOS 10.10 后 Apple 官方发布的 Hypervisor.framework 二次开发,据说性能得到很大提升。

作为商业化虚拟机的佼佼者的 Parallels Desktop,提出了自己的 Parallels Hypervisor。因此,Docker 和 Parallels Desktop 在虚拟化技术上谁更胜一筹呢?或者说,开源和商业化闭源的虚拟化技术谁更强?通过一番测试,我的结论是 Parallels Desktop 完全吊打 Docker 。

# 1. 关闭 Parallels Desktop 的图形界面

估计大部分的用户和我一样,运行 linux 虚拟机不需要图形界面,仅仅需要一个 ssh 通过终端连接即可。Parallels 官方的这份指引介绍了如何打开 Parallels Desktop 的 headless mode。基本按照下图设置就行:
在这里插入图片描述
官方的 headless mode 就是让虚拟机以后台进程的形式运行,同时不显示 GUI 界面。注意这里并不是终止了 GUI 界面相关进程,而仅仅是不显示而已,就好比一个电脑主机没有插上显示器。以 Ubuntu 18.04 为例,打开 headless mode 通过 ssh 后登入虚拟机后,我们通过系统活动监视器会发现虚拟机内存占用比较高,约 1G 左右。而通过 htop 命令显示虚拟机内的内存占用如下图:
在这里插入图片描述
可以发现,与图形界面相关的 gnome-desktop 套件占用了大量内存。由于图形界面的存在,负责虚拟机与 macOS 宿主通信的 prl_disp_service 也会相应占用更多内存,而且 gnome-desktop 套件经常自动触发后台更新与维护服务导致 prl_disp_service 占用大量 CPU (这就是为什么 Linux 虚拟机经常在用户没有任何操作的时候 CPU 保持高占用,风扇狂转)。

剩余内容请参见:https://wizyoung.github.io/pd-vs-docker

发布了46 篇原创文章 · 获赞 106 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/pijianzhirui/article/details/104547677