克服云计算开发环境中的容器难题
如今,企业寻求超越虚拟化,甚至许多企业在寻找一个理想的公共云应用策略,而容器都人气暴涨。因为容器比虚拟机的开销更低,往往是更快、更容易部署,而且通常让企业的每个服务器上运行更多的应用程序。容器似乎是完美的发展目标,但他们还存在安全性和法规遵从问题。另外,开发人员必须处理质量和可用性风险问题。而在探讨在云开发环境使用容器时,不能解除他们使用容器的这些痛点。
开发人员应查看容器中的多道程序、多用户分区,以及虚拟机之间的事情。所以他们必须管理容器隔离的应用程序的组件,了解容器管理工具,如Docker的作用,并解决容器发展所需的每个操作系统和容器管理相结合的具体问题。
容器(例如虚拟机)可以容纳应用程序组件,允许服务器共享多个组件或组件实例。它们共享基本的操作系统服务,在某些情况下,甚至共享一些中间件服务。他们管理例如能见度和命名等元素,以减少相互作用。
由于容器是在云计算中使用“高于”传统的虚拟化技术,容器是跨多个云使用的,无论是公共云或私有云,基本上是便携式的,并可以任意组合。因为操作系统是共享的,容器具有低开销和可用于细分的基础设施即服务或虚拟机实例来充分利用这种可移植性。这很可能是大多数开发人员的容器开发应用程序针对这个可移植性任务的主要好处。
容器的工作将取决于两个因素——操作系统的主机和管理平台的部署。虽然有Linux和其他操作系统的其他容器管理系统,最常见的平台是Linux和Docker。开发人员的第一个任务是确定容器应用程序的运行环境,确保选定的管理工具和中间件兼容所有的目标。流行的容器管理系统将适应容器运行的不同的软件平台,但不是所有这样的系统都可以解决所有的问题。
记录这些工具的任何依赖关系,因为如果将应用程序移植到另一个云计算的开发环境中,你也需要移植工具。
容器实现的一般方法是指定资源分配,隔离操作系统容器系统,并通过容器管理系统来管理容器和操作系统和资源之间的关系。在Linux中,例如,用户信息,文件系统名称和进程空间,网络的操作系统和容器管理系统,如Docker管理。容器可以没有管理工具进行部署,但它们从根本上简化了中间件工具和网络连接的版本控制的事情。这意味着选择容器工具需要仔细评估,无论是开始开发还是早期应用规划。
拥有成功的容器项目的用户建议,建设任何容器应用程序应该认真考虑承诺容器如何承载其发展。在建立和维护容器时取得的经验对于基于容器的应用程序很有帮助。还可以测试出应用程序生命周期管理办法和使用开发容器的实例的可移植性,降低了实际应用程序测试的风险。
开放源码和系统软件和工具经常从一个中央库加载,其中包含了所支持的软件。还有其他来源的基于容器的图像,但开发人员需要注意的是,他们选择的图像仍然支持其操作系统和容器管理系统的当前版本。这个级别的版本控制是基于容器的应用程序的关键,所以基准图像版本有任何更改,一定要进行测试。测试将依赖于操作系统和容器管理系统的结合。虽然使用一个通用的容器管理工具可以在用户主机服务器中对可以运行的应用程序进行限制,但总体上更为高效。容器及其内容是暂时性的,而最大的错误是新的容器开发人员可能在应用程序设计中不了解需求。所有容器应用程序应被看作是一个集合的微服务,都是无状态的,在应用程序中没有持久性数据存储。用户需要提供状态控制和数据持久性的组件工具。使用数据驱动的智能,后台状态控制要与持久性组件数据外置数据库记录一致。一定要记录这些工具的任何依赖关系,因为如果应用程序移植到另一个云计算的开发环境,所需要的端口,或者提供接入,这些工具都会发生改变。