我为什么选择使用容器?

1,118 阅读5分钟

【编者的话】作者主要介绍了自己选择使用容器的6个主要原因,这也是容器为我们的工作带来的一些好处。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

我使用容器已经将近三年,最初在一个技术支持团队工作,主要是帮助客户解决应用程序中的问题,并提供一些有关运行容器最佳做法的建议。如今我在的团队,做的主要是容器开发并在我们自己的OpenShift环境中使用,由于我的技术支持背景,我的故障排除技巧能帮助我完成这项工作。

我使用容器运行我的大部分任务,这让我的工作变得比较轻松。我可以在容器中运行任何软件,无论是用于评估或者用于我自己的网站。一个事实是:容器在很多公司中变得越来越普遍。Google的数据中心每天可以不停地运转数千个容器,Netflix每周可以启动超过100万个容器,而许多其他公司(无论是小型还是大型)都在生产中使用容器来实现新的可扩展性。 考虑到这一点,我想列出我开始使用容器的六个主要原因。

容器简单

在我的工作中,我一直认为KISS原则是最棒的,那为什么不使用简单的工具来改善我的工作?我说容器很简单,因为我只需要用两个或三个命令就可以在我的机器上运行一个操作系统以及整个软件栈。由于这种简单性,我可以节省大量运行容器的时间和精力,而不是花时间在创建虚拟机、安装操作系统和安装软件。这样,我就可以专注于重要的事情。

容器轻量

容器的好处是它们直接运行在操作系统(Linux)层之上,而中间没有hypervisor层。这使得容器比虚拟机使用的资源更少,我可以在相同的硬件资源上启动更多的容器。

另一方面,容器使用的存储空间也比虚拟机少,这更有吸引力。举个例子,RHEL 7镜像大小是193MB,还有一个替代的RHEL版本(我们称之为RHEL Atomic),大小小于80MB。由于镜像大小的原因,容器启动的引导时间少于任何传统运行操作系统的方式。虽然在虚拟机或裸机上安装RHEL的启动时间大约是1分钟,但在容器内部运行的时间可能不超过15秒。

容器具有可移植性(不止是 "可以运行在我的机器")

容器是不可变的,这项功能对我来说特别重要。它保证了在我机器上运行的容器能以相同的方式运行在任何一台机器上。不会再有类似“它在我的机器上可以工作”这样的借口。使用容器可以避免这种情况,甚至可以运行在像AWS,IBM Bluemix,Google Cloud Platform,以及Azure这样的云端供应商上,并且获得相同的行为。

大型社区支持

想想你要使用容器运行的软件,我敢确定如果你找不到所需软件的镜像,那么很快会有人创建它,并在任何存储库中推出。大多数公司正在为他们的软件创建容器镜像用以支持在容器上运行,你可以使用这些镜像来创建自己的配置。此外,还有很多有关容器的书籍(包括付费和免费的),这些书籍会教你如何开发,运行容器并且使其更加安全。

容器是可扩展的

你找到一个可以运行的镜像,但是镜像中缺少你需要的特殊配置或者一些软件。使用容器,你可以扩展现存的镜像,在容器中加入你需要的东西,然后根据你自己的需求制作一个更适合的镜像。这样,准备操作系统运行软件的时间远远少于任何其他方法。即使使用DevOps工具,如Puppet,Chef或者其他,准备运行软件环境的时间甚至超过运行一个新的容器。

容器为云就绪

云计算是下一代计算,你可以按需在你的环境中添加资源,并收集有关它们的运行指标。容器在设计中将所有这些要求以及更多的内容带入云计算,因为它们在出现任何问题时很容易进行更换。你不必为丢失一个容器而担心,因为最先进的云计算架构已经为你管理容器,并启动了一个新的容器来替代没有响应的容器。

原文链接:Why I Started Using Containers(翻译:肖远昊)