Alpine Linux是Unikernel的实现吗?

时间:2016-06-25 15:41:00

标签: docker linux-kernel kernel linux-containers alpine

我一直在阅读很多关于Docker容器和Unikernels以及如何使用我自己的应用程序运行轻量级环境。

我理解Linux容器和Unikernel是不同的东西,因为第一个是与主机操作系统共享资源的内核功能(如命名空间,cgroup等)的实现,后者是围绕应用程序构建的独立专用库操作系统

但后来我偶然发现了Dockerhub中的Alpine linux派生图像。它们非常轻巧,非常专业。但它们是否运行相同的LXC / runc功能?

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

阿尔卑斯山图像与其他图像有何不同?

2 个答案:

答案 0 :(得分:1)

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

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

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

  

Alpine Linux的设计考虑了安全性

Alpine Linux图像运行在我认为相同的LXC / runc功能上。

答案 1 :(得分:1)

高山不是独行侠。这是一个Linux发行版,我不同意它在设计时考虑了安全性。

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

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

Unikernel的特征是设计上是单个过程。这意味着您实际上无法派生/执行新程序。阿尔卑斯山人不适合Linux。

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

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

还有更多差异(例如缺少用户或缺少外壳等),但总的来说,没有Alpine不是Unikernel,也没有Unikernel的任何优势。