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