云容器的综合指南

绝对是云计算世界中最热门的主题之一是云容器。这种不断发展的技术正在改变它操作的方式,就像虚拟化技术一样多的时候进行了几年前。然而,使用容器不是一个完全新的概念。像VM技术一样,集装箱化也起源于大铁系统。自90年代与J2EE和Java的分布式对象和集装箱移动,创建从底层平台提供摘要来自底层平台的运行实例的能力。集装箱的第一个商业实施是作为Sun(目前Oracle)Solaris 10 UNIX操作系统内的特征。

什么是容器?

但问题仍然存在,是什么是容器,他们在云中发挥了什么作用?简单地,一个容器是一个孤立的便携式运行时环境,您可以在其中运行应用程序以及所有依赖项,库和其他二进制文件;它包含运行应用程序所需的所有配置文件。通过对应用程序平台及其依赖性进行集装箱,潜在的基础设施和OS分布的差异被抽出。这使得应用程序可轻松地从平台移动到平台。

尽管他们微妙的相似之处,但容器在多种方面与VM不同。这两者都提供了一个离散,隔离和单独的空间,用于创建单个系统的错觉。但是,与VM不同,容器不包括操作系统的完整图像或实例,具有驱动程序,内核和共享库。相反,同一主机上的容器可以共享相同的操作系统内核,并使用作为CGroups和命名空间的内核功能保持彼此分隔的运行时和其他服务。与虚拟机相比,集装箱使用更少的资源,更轻便。与虚拟机相比,一台服务器能够托管更多容器。虽然虚拟机需要几分钟才能启动其操作系统并开始运行托管应用程序,但可以几乎立即启动集装箱应用程序。

云中的集装箱化

容器主要通过以更便携的方式捆绑和运行应用程序为企业添加价值。它们可用于将应用程序分解为隔离微型服务,这促进了增强的安全配置,简化管理和更粒度的缩放。从本质上讲,容器被定位以解决先前通过配置管理(CM)工具解决的大量问题。但是,它们并不是直接替代CM或虚拟化。虚拟化在使云中的工作负载整合方面发挥了至关重要的作用,随后确保在硬件上花费不会浪费。容器化简单地将其进一步迈出。

容器的便携式性质意味着它们可以在运行相关操作系统的任何基础架构或平台上有效运行。对于开发人员来说,容器意味着告别繁琐的流程,有限的生命周期自动化,与补丁的相同旧问题,绝对没有刀具集成。开发人员可以简单地在工作站上运行容器,在容器中创建一个应用程序,将其保存在容器图像中,然后在运行类似操作系统的任何物理或虚拟服务器上部署应用程序。基本的想法是建立一次并在任何地方运行它。

Containization提供了在内部保存应用程序的部分,然后从同一供应商或来自不同供应商跨公共或私有云分发它们的机制。容器提供确定性软件包,这意味着网络拓扑可能不同,或者安全策略和存储可能不同,但应用程序仍会运行。

来了码头

Docker负责普及容器图像的想法。它背后的势头已经使Docker同义于集装箱技术,因为它继续推动云中的更多兴趣。云供应商也表现出兴趣使用Docker提供支持容器标准的基础架构。 Docker为开发人员提供了一种方法,用于基于Linux系统图像将应用程序及其依赖关系打包及其依赖关系。所有实例都在主机系统内核上运行,但仍然在各个运行时环境中孤立,远离主机环境。创建Docker容器后,如果在容器中运行活动进程,它只保持活动状态。

Docker引擎运行所有主要的Linux发行版,包括拱门,SUSE,GENTOO,FEDORA,Ubuntu,Debian和Red Hat,很快Windows - Microsoft宣布它将将Docker Container技术带到Windows,并介绍将在Windows Server上运行的Windows Server容器。 Docker已被测试并硬化企业生产部署,其容器易于在云中部署。它已经建立在某种程度上,它可以合并到大多数Devops应用程序中,包括Ansible,Vagrant,Chef和Puppet,或者它可以自行使用它来管理开发环境。

Docker还为集装箱部署提供了添加的工具,例如Docker Swarm,Docker Compose和Docker Machine。在最高级别,撰写促进复杂分布式应用程序的快速简便部署,Swarm为Docker提供本机群集,并且机器可以轻松旋转Docker主机。 Docker无疑是建立了一个带有坚实设计的容器标准,良好的设计良好。但是,Docker不一定是所有应用程序的正确选择,重要的是考虑其容器/平台的正确性。

另一名球员

仅基于收养率选择技术可能导致长期问题。探索所有可用选项是在项目的生命周期中保证最大性能和可靠性的最佳方式。

I. Coreos. Rocket

COREOS包括替代选择Docker运行时称为火箭。 Rocket已为服务器环境建立,具有可疑的安全性,速度,可兼能和生产要求。虽然Docker扩展了所提供的功能的范围,但CoreOS旨在提供一个极简主义的集装箱管理器和建设者的实现。该软件由两个元素组成: Contool - 管理容器的建筑物并处理容器发现和验证,以及 rkt - 照顾容器图像的运行和取出。

Docker和Rocket之间的主要区别是后者不需要外部守护程序,每当rkt组件都被要求运行容器时,它就会在其自己的过程树和cgroup的范围内没有任何延迟。另一方面,Docker Runtime利用了需要root权限的守护程序,这会使API开启以对恶意活动的剥削,例如运行未经授权的容器。从企业角度来看,由于其可移植性和自定义选项增加,火箭似乎可能是更好的替代方案。 Docker对较小的团队更为理想,因为它提供了更多的曲线功能。

II。 Kubernetes.

Kubernetes是由Google创建的作为管理跨私人,公共和混合云环境的辅助工具。它处理计算群集内的节点的部署,调度,维护,缩放和缩放和操作。 Kubernetes中包含的负载平衡,编排和服务发现工具可与火箭和码头容器一起使用。简单地放置,而容器提供生命周期管理,Kubernetes通过提供编排并管理容器的集群来将其带到一个下一个级别。

Kubernetes有能力在现有虚拟机中启动容器甚至提供新的VM。它从引导容器到管理和监控时都是一切。系统管理员可以使用Kubernetes创建属于应用程序的容器的Pods -Logical集合。然后可以在裸机服务器或VM内配置豆荚。 Kubernetes可以用作Docker Swarm的替代品,它提供本机群集功能。

作者:Gabriel Lando