简年6:一个关于 Linux 容器化的脑洞

简年6:一个关于 Linux 容器化的脑洞,第1张

于是突然脑洞一开,如果把整个 Linux 系统的模块都放进容器中运行的话,Linux 就可以变得非常好玩了。

为了方便大家理解这个脑洞,先上张图,下面的把两个不同的桌面环境同时无缝运行在一个桌面,包括软件和整套桌面:

图中通过共享宿主机显示服务来达到同时运行的效果,接下来的脑洞中会尝试把所有模块都放进容器中,包括显示服务。

当前 Linux 的软件“碎片化”可以说是 Linux 普及的一大拦路虎,发行版之间各自为政,软件分发渠道不一。另一方面,Linux 在目录结构上也没有严格的规定,安装一个软件往往因为开发者的习惯而不同,装好的软件在电脑磁盘中如同垃圾一样七零八落。尽管有 NixOS 这样的发行版在努力,但声势不大,难成气候。

所以如果把 Linux 模块容器化之后,虽然不能够从根本上解决上面的问题,但是因为隔离了文件系统,一些依赖以及碎片化的软件得到了一定遏制。最重要的是,如果模块容器化之后,Linux 在部署、备份上将极为方便。

脑洞不能只是脑洞,我们来看一下如何实现吧。(本文为一边写一边找资料一边 *** 作验证,至于结果嘛,看下去吧。)

内核肯定不用容器化了,Docker 靠的就是 Linux 内核支撑,Linux 内核更换也方便,无需 Docker 容器包装,那么除此之外的其他东西,就都交给 Docker 来做的话,需要考虑哪些方面呢?

内核启动的第一个进程,即 PID 1 是整个系统的关键部分,我能想到的两个系统是 CoreOS 和 RancherOS,这两者都是针对 Docker 而开发的特别发行版。

之所以使用到它们当然是看上了它们对 Docker 的深度整合,CoreOS 使用 systemd 管理容器(似乎),而 RancherOS 更加彻底,直接使用 Docker 管理系统,Docker 甚至是 RancherOS 的 PID 1。

因为本文的脑洞是让 Docker 容器作为一个桌面运行,也就是 run as a Desktop OS,而不是把 GUI 程序运行在容器中然后显示在正常 *** 作系统上,也就是 run on a Desktop OS。

要了解两者差别,需要认识到 X 服务在 Linux 下工作的大致原理。
在此之前,你需要对 GUI 这个名称有个认识,GUI 全称是图形用户界面(Graphical User Interface),我们平时使用的大部分软件,例如浏览器、办公软件、聊天软件等都是有图形界面的。

而 Docker 运行 GUI 软件的技术早就已经不是什么新鲜事了。大部分都是直接通过共享宿主系统的 X11 服务实现 GUI 界面的呈现。而我的脑洞中,是从头到尾对 Linux 系统的包装,这自然也包括显示服务,这意味着我们不可以使用宿主机的显示服务来显示 GUI 程序。

以 X11 为例,在 X11 协议中,分为 X11 服务端和 X11 客户端两个部分。X11 服务端是用于驱动具体显示硬件将数据进行展示的模块,而 X11 客户端则接收应用程序和用户的 *** 作,并产生刷新屏幕信息的命令发送给服务端。服务端与客户端可以是在同一个主机上,也可以通过网络相连。如下图所示:

接下来,我们遇到一个问题,因为没有显示驱动,我们无法显示界面,即便依靠 GPU 处理也无法显示出来,这个时候就需要一个小玩意了。

Xvfb的全称是 “X virtual frame buffer”,是一种 X11 服务端的特殊实现。说比较特殊是因为 Xvfb 不需要实际的显示装置和硬件驱动,它将渲染的图像内容保存在内存中,最初的应用场景主要是用于自动化测试等不需要看到执行界面的地方,作为完整 X 服务的替代。

在前面已经提过,之所以考虑到使用这个工具,还有一个很重要的原因:轻量。Xvfb的所有文件放在一起只有大约 10MB 的大小(加上一些额外依赖的包,实际增加镜像的体积大概在几十 MB)。这样一种轻量级的 X11 服务器用在 Docker 里面使用实在是在合适不过了,此外,Xvfb也与 CoreOS、RancherOS 不支持图形显示、没有显示器驱动的情况十分契合。

现在还有个关键性的问题:怎样把内存里的渲染数据表现出来。为此,我们需要引入另一个 Linux 下的工具软件X11vnc,它提供了将 X11 服务端内容获取出来并展现到远程的用户控制端的功能。

这样我们通过VNC客户端就可以看到界面了。

但是我们饶了一圈,似乎又回来了,到头来我还是要通过VNC客户端显示内容啊,这和直接用宿主机显示服务有什么区别啊?!

等会,区别还是有的,在本文中显示的界面少了两次协议转换,直接通过 x11vnc 转发出去,效果十分逼真,延迟感受基本体会不到。

依据这个思路,我们准备在容器里面从零搭建整个 X11 的世界。不过,要是安装标准的 X11 服务,加上它的各种依赖,少说需要几百 MB 的额外空间,其他啥都没装就把镜像变大好几倍了,工程着实浩大。好在开源界已经有了许多种轻量级 X11 服务替代品,例如Xdummy、Xvfb和Xpra。这些平时不太显眼的宝藏在容器中可以大有作为。当然不嫌弃的话还是 X 大法好,值得一提的是Wayland 与 X 作为显示服务却有本质不同,Wayland直接让软件与硬件交流,我们没有机会对 Wayland 封装,所以这么一看 X 老大爷还是挺有趣的。

作为一个需要对外提供显示图形环境的容器,有一些基本的基础环境需要解决。例如:

这些内容就像一个基本的 *** 作系统。用户可以自由选择显示服务,并自由组合桌面环境,也就是说同时运行 Gnome 和 Kde完全没有问题。

由于 CoreOS 使用了只读的系统分区,想在系统上直接安装一个 X11 服务是行不通的。

但是 RancherOS 不同,我们可以在下面链接中看到,老外已经做了个测试,使用一个仅有几十 MB 的系统跑一个桌面容器,运行良好。
>2018年5月18日,国宝人寿保险股份有限公司(以下简称:国宝人寿)CIO张琦在保险行业大会上就自公司实际情况分享了《基于容器技术的国宝人寿金融混合云实践》。
国宝人寿作为国内第一家全业务系统基于容器技术在混合云上运行的寿险公司,在10个月内快速高效的完成22个信息系统的建设,通过银保监会的验收,并获批开业。而这样的容器+混合云解决方案正是由希云cSphere提供。

希云cSphere作为一家专业的国内领先容器私有云供应商,自成立以来服务于金融、能源、汽车、航空、船舶、教育等多个行业领域,其中90%的客户都已将 生产环境业务 运行到了希云cSphere容器管理平台上,有力验证了希云cSphere容器管理平台产品的普适性、健壮性。

项目筹建之初,国宝人寿开业需要满足以下四个目标:

1、大幅度提升客户体验;

2、建立数字化销售能力;

3、传统渠道优化布局;

4、具备与同业进行市场竞争的信息化能力;

充分考虑到国宝人寿筹建期,对于人员、服务器资源、协作开发、以及交付部署,并且能够快速搭建公司全方位的前中后信息系统最终达到上述四点要求,希云cSphere提供容器+混合云解决方案实现了“保险+互联网”创新模式,全面实践CI/CD,加快了软硬件的交付周期,提升用户体验的同时能够快速应对市场竞争,最终实现对业务的强有力的保障。
国宝人寿应用基于容器部署,对于开发、测试、上线流程进行标准化、规范化处理,最大程度的减少重复工作,实现了新一代应用开发、测试、交付。通过运用新技术建立“保险+互联网”的创新模式,国宝人寿的业务端能在开业初期即具备高起点的数字化、自动化和大数据能力,使传统业务渠道在具备数字化能力基础上集中精力投入到产品和销售推动上,同时建立具有数字化基因的新型业务渠道。

大会上国宝人寿CIO张总表示:此次项目的实施真正的做到了提速降成本,短短十个月的时间从筹建到开业,整个项目收益取得最大化更是毋庸置疑,希望国宝人寿再创佳绩,也希望后续与希云cSphere的合作更加紧密。

希云cSphere合伙人张春源表示:和国宝人寿的深度合作,真正实现了双赢,让我们对保险业务信息化的理解有了更加深刻的认识,必将对希云深耕保险行业提供更强的助力!

国产服务器的品牌:华为、黄河、曙光、新华三、浪潮、亿万克。
感兴趣的话点击此处,免费了解一下

服务器的功能相对于PC机来说复杂许多,不仅指其硬件配置,更多的是指其软件系统配置。服务器要实现如此多的功能,没有全面的软件支持是无法想象的。但是软件系统一多,又可能造成服务器的使用性能下降,管理人员无法有效 *** 纵。所以许多服务器厂商在进行服务器的设计时,除了在服务器的可用性、稳定性等方面要充分考虑外,还必须在服务器的易使用性方面下足功夫。

亿万克是民族高科技制造企业领导品牌,自主研发,自主可控,为党政、金融、医疗、教育、电信、电力、交通和制造等行业的信息化发展和数字化转型提供安全可靠的自主创新解决方案。亿万克服务器真正做到了自主研发、能力内化、安全可信、安全可控。

单服务器容器规模指的是在一台服务器上运行多个容器实例的数量。这个数量通常受到服务器硬件资源的限制,如CPU、内存、磁盘空间等。对于一台具有良好硬件配置的服务器来说,可以运行数十甚至上百个容器实例。
但是,容器的规模并不仅仅与硬件资源有关,还与应用程序的特性有关。例如,一个I/O密集型的应用程序会大量使用磁盘I/O,可能会使磁盘资源成为瓶颈,从而影响容器的规模。另一个例子是内存密集型应用程序,可能会需要大量的内存才能支持运行,从而限制容器的数量。
因此,在确定单服务器容器规模时,需要考虑应用程序的特性和硬件资源的限制,并进行实际测试和评估,以确定最适合的容器数量。同时,还需要考虑容器之间的互相影响,以避免容器间的资源竞争和瓶颈问题。

国产专门做虚拟化软件的公司有十几家,目前IDC上榜了的国产虚拟化只有云宏的CNware。2018年Gartner也推荐了这家。
现在因为国产自主安全的需要,国产化替代兴起,我们单位也在做国产化替代,去年年底先部署在一个非核心业务上,目前看起来很稳定,今年下半年大批量替换成CNware,明年实现全部国产化。之所以选择CNware是因为部署简单,自带的虚拟化管理平台还能纳管现有的VMware, *** 作习惯也差不多,安全策略比较多。
另外我同时考察了联想、华为、华三、曙光、宝德的,总体来讲,性能这块云宏的CNware是最稳定的。
纯手打,给个最佳啊!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12679238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存