你应该使用容器吗?


【编者的话】究竟什么情况下应该使用容器,什么情况下使用虚拟机?让我们把容器的优势一一列出,再看它是否能适应你的生态系统。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享等。

近年来,随着高端技术崭露头角并逐渐取代传统系统,虚拟化需求也迅速扩大。同时,云计算的崛起在这项横扫业界的技术发展过程中起到了催化剂的作用。

容器化已经不是一个新概念,通过将应用程序封装在容器自有的操作环境中,使其独立于平台,同时更加方便使用。目前,所有顶尖的云计算厂商,如AWS,Google,Microsoft等等,都在提供云容器服务。

容器化的潜在优势

在Docker推出开源容器技术,并有AWS向其提供容器服务支持之后,容器化技术的发展势头更劲。这项技术能带来的优势如下:

平台独立性: 如将一个应用的所有依赖都封装到容器中,该应用便可以在各种机器上自由运行。这体现了该技术的高度可移植性。

不再需要重写代码: 站在公司的角度,容器化带来的最大优势是开发者们不再需要一遍又一遍地为每个不同的平台重写代码。这样一来,不仅省时省钱,还省力。

最适合内部应用的开发: 应用的容器化最适合公司内部应用的开发。它提供了一个和生产环境一致的开发环境,防止由于环境差异导致的功能失效,而且有助于移植应用。

划分任意应用: 不仅有助于划分内部应用,针对任何种类的应用,容器化都能成功将其划分到微服务中,提高整个系统的速度。

轻量: 在移植应用的过程中,不需要将操作环境也封装进容器中同步移植,因此,容器是相当轻量的。容器中只有应用,使其更加简洁轻量。

容器化vs虚拟化

上面对容器化的描述听起来跟虚拟化是不是挺像的?确实,这个概念就是从虚拟化发展过来的,但两者之间还是存在着一些区别的。下面我们来对两者做个比较:
05D64308-7FF5-4885-87D3-87048E12B406.png


既然虚拟化是机器的抽象,你也可以将容器看做一种升级版虚拟机。

容器的挑战

Docker的发展以及容器的实现带来的种种优势,让这项技术名声大振。但是,容器的部署过程中也存在着一些挑战。

一个操作系统的崩溃会破会整个系统: 由于所有的容器都访问同一个操作系统,所以容器是资源高效的。但正是这种机制下,操作系统的崩溃会导致所有的容器崩溃。

兼容性问题: 迁移容器的过程十分反锁,因为要考虑到服务器操作系统是否兼容的问题,这就限制其迁移能力。

并不适用于所有任务: 容器化适用于由小程序块构成,可以被拆分成微服务的应用。但是,有些应用却不是这样,因此也不好拆分。不过,这些应用还是可以在虚拟机上运行。

如何确定你是否应该使用容器

这完全取决于你的需求。如果你需要运行同一个应用的多个实例,那么容器会有很大帮助。但如果你想要运行多个应用,那你应该选择虚拟机。

如果你只能运行一个操作系统,容器还是很有用的。同时,如果你对运行各种操作系统没有限制,那虚拟机对你来说是更好的选择。来回考量这些区别,可能你想同时选择这两种技术,确实他们可以在同一个系统中共存,并服务于公司的不同任务。


虽然有种种漏洞,这项新兴技术已经成功占据了市场,将近80的组织正在使用容器,其中68%的组织相信,他们正在实现期望中的目标。——ClusterHQ
ClusterHQ还表示,48%的企业正在使用AWS。其次是 Internal Data Centre占有28%的市场,第三位是有着7%市场占有率的Google Compute Engine。

但是,这项技术仍然处于起步阶段,它将为更多的尖端技术创造空间,一起来颠覆数字经济。

原文链接:Should You Use Containers?(翻译:马远征)

0 个评论

要回复文章请先登录注册