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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章