Alpine Linux 是 Unikernel 的实现吗?

Is Alpine Linux an implementation of a Unikernel?

我已经阅读了很多关于 Docker 容器和 Unikernel 以及如何 运行 使用我自己的应用程序构建轻量级环境的资料。

我明白 Linux 容器和 Unikernel 是不同的东西,因为第一个是与主机 OS 共享资源的内核特性(例如命名空间、cgroups 等)的实现,以及后来是围绕应用程序构建的独立专业库操作系统。

但后来我在 Dockerhub 中偶然发现了 Alpine linux 派生的图像。它们非常轻巧且非常专业。但是它们 运行 具有相同的 LXC/runc 特征吗?

是否可以使用 Docker 在管理程序实现下 运行 unikernel?

A​​lpine 镜像和其他镜像有什么区别?

我对 unikernels 不是很熟悉,但我可以尝试回答你的最后一个问题:

大多数Docker图像都是基于Ubuntu,主要区别在于图像的大小,而Ubuntu图像有183MB,Alpine只有4.5MB .

因此,Alpine 具有较低的攻击面,并且专为安全性而设计,请看这里:http://www.alpinelinux.org/about/

Alpine Linux was designed with security in mind

A​​lpine Linux 图片 运行 我认为具有相同的 LXC/runc 特征。

Alpine 不是 unikernel。这是一个 linux 发行版,我不同意它在设计时考虑到了安全性。

它有多个问题(包括没有 root 密码):

https://blog.qualys.com/technology/2019/06/11/alpine-docker-image-vulnerability-cve-2019-5021-how-to-detect-and-fix

Unikernel 的特点是它们在设计上是单一进程。这意味着您实际上不能 fork/exec 一个新程序。高山 linux 不符合该规则。

进一步 - Docker 不是管理程序。它 可以 在 osx 上使用 HVF 或在 linux 上使用 kvm 之类的东西,但在大多数情况下它不会。为什么?因为大多数 docker 被推送到生产环境的容器最终都生活在 public 云中的 linux 虚拟机上。 运行 现有虚拟机之上的另一个虚拟机具有严重的性能税,因此很少有人出于选择这样做。

另一方面,Unikernel 可以部署为它们自己的 AMI,没有底层 linux。这也将它们与小型 linux 发行版(例如 Alpine)区分开来。

还有很多差异(比如缺少用户,或者缺少 shell,等等)但总的来说,Alpine 不是 unikernel,没有任何优势一个 unikernel。