克服云计算开发环境中的容器难题

如今,企业寻求超越虚拟化,甚至许多企业在寻找一个理想的公共云应用策略,而容器都人气暴涨。因为容器比虚拟机的开销更低,往往是更快、更容易部署,而且通常让企业的每个服务器上运行更多的应用程序。容器似乎是完美的发展目标,但他们还存在安全性和法规遵从问题。另外,开发人员必须处理质量和可用性风险问题。而在探讨在云开发环境使用容器时,不能解除他们使用容器的这些痛点。

开发人员应查看容器中的多道程序、多用户分区,以及虚拟机之间的事情。所以他们必须管理容器隔离的应用程序的组件,了解容器管理工具,如Docker的作用,并解决容器发展所需的每个操作系统和容器管理相结合的具体问题。

容器(例如虚拟机)可以容纳应用程序组件,允许服务器共享多个组件或组件实例。它们共享基本的操作系统服务,在某些情况下,甚至共享一些中间件服务。他们管理例如能见度和命名等元素,以减少相互作用。

由于容器是在云计算中使用“高于”传统的虚拟化技术,容器是跨多个云使用的,无论是公共云或私有云,基本上是便携式的,并可以任意组合。因为操作系统是共享的,容器具有低开销和可用于细分的基础设施即服务或虚拟机实例来充分利用这种可移植性。这很可能是大多数开发人员的容器开发应用程序针对这个可移植性任务的主要好处。

容器的工作将取决于两个因素——操作系统的主机和管理平台的部署。虽然有Linux和其他操作系统的其他容器管理系统,最常见的平台是Linux和Docker。开发人员的第一个任务是确定容器应用程序的运行环境,确保选定的管理工具和中间件兼容所有的目标。流行的容器管理系统将适应容器运行的不同的软件平台,但不是所有这样的系统都可以解决所有的问题。

记录这些工具的任何依赖关系,因为如果将应用程序移植到另一个云计算的开发环境中,你也需要移植工具。

容器实现的一般方法是指定资源分配,隔离操作系统容器系统,并通过容器管理系统来管理容器和操作系统和资源之间的关系。在Linux中,例如,用户信息,文件系统名称和进程空间,网络的操作系统和容器管理系统,如Docker管理。容器可以没有管理工具进行部署,但它们从根本上简化了中间件工具和网络连接的版本控制的事情。这意味着选择容器工具需要仔细评估,无论是开始开发还是早期应用规划。

拥有成功的容器项目的用户建议,建设任何容器应用程序应该认真考虑承诺容器如何承载其发展。在建立和维护容器时取得的经验对于基于容器的应用程序很有帮助。还可以测试出应用程序生命周期管理办法和使用开发容器的实例的可移植性,降低了实际应用程序测试的风险。

开放源码和系统软件和工具经常从一个中央库加载,其中包含了所支持的软件。还有其他来源的基于容器的图像,但开发人员需要注意的是,他们选择的图像仍然支持其操作系统和容器管理系统的当前版本。这个级别的版本控制是基于容器的应用程序的关键,所以基准图像版本有任何更改,一定要进行测试。测试将依赖于操作系统和容器管理系统的结合。虽然使用一个通用的容器管理工具可以在用户主机服务器中对可以运行的应用程序进行限制,但总体上更为高效。容器及其内容是暂时性的,而最大的错误是新的容器开发人员可能在应用程序设计中不了解需求。所有容器应用程序应被看作是一个集合的微服务,都是无状态的,在应用程序中没有持久性数据存储。用户需要提供状态控制和数据持久性的组件工具。使用数据驱动的智能,后台状态控制要与持久性组件数据外置数据库记录一致。一定要记录这些工具的任何依赖关系,因为如果应用程序移植到另一个云计算的开发环境,所需要的端口,或者提供接入,这些工具都会发生改变。

最后需要考虑的是容器的应用网络和工作流程的整合。需要对公共云进行特殊的考虑,因为它们涉及到复杂的“私有IP”的使用。采用工具(如Docker)建立网络并设定组件集成策略。开发人员将需要采取这两个工具关闭需要关闭的应用程序。

容器越来越受用户欢迎,更可能是因为直接的容器托管方式更加适合用户的云计算或容器的目标供应商。这些可能需要特定的容器管理工具,甚至是基于云的开发环境。容器和虚拟机还融合了工具意义。工作人员不仅要跟踪其所使用的工具,还要在开发应用程序时考虑整个容器空间,以确保有更好的选择。另外,应用程序要足够灵活,以适应容器技术的发展趋势。容器将是应用前景的一部分,所以要更好使用它们。

本文作者:Harris编译

来源:51CTO

时间: 2024-10-23 18:41:28

克服云计算开发环境中的容器难题的相关文章

生产环境中的容器之工作流

本文讲的是生产环境中的容器之工作流,[编者的话]很多公司已经在生产环境里大规模使用容器.前一篇文章里介绍了Spotify,DramaFever,Built.io和IIIEPE如何以及为什么使用容器.本文继续深入讨论这几个公司的工作流. 构建应用程序以及管理pull请求 在生产环境使用容器的一大吸引人之处是创建无缝的开发到生产环境的能力,最先代码在开发人员的笔记本上,然后能够整体移动到测试环境,并且随后直接部署,而不会因为底层基础架构环境的改动而导致问题. IIIEPE怎么做 Luis Elizo

IFTTT在开发环境中使用Docker的经验

本文讲的是IFTTT在开发环境中使用Docker的经验,[编者的话]IFTTT是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便,其宗旨是"Put the internet to work for you"(让互联网为你服务).Docker在IFTTT中也在开发实践,以下是Nicholas Silva的一些介绍. IFTTT是一款新兴的互联网工具型应用,正如他们给自己的介绍"If This Then T

80/20定律:在生产环境中使用容器所能带来的收益

本文讲的是80/20定律:在生产环境中使用容器所能带来的收益[译者的话]二八定律又名80/20定律.帕累托法则(定律),它指出了在大部分情况下:多数努力,它们只能造成少许的影响:而少数的部分,它们造成主要的.重大的影响. 将容器应用到你的日常工作当中,花费20%的精力或许就能带来你所期望的80%的收益,避免将时间和精力花费在琐事上,要学会抓重点. 今天许许多多的人都在谈论容器,容器编排,以及容器相关的生态,而相比之下却只有少数几个组织能够真正的在生产中使用容器. 鉴于使用容器所能带来的那些好处,

在VC++开发环境中整合Pro*C/C++

c++ 本文所讨论的内容基于以下环境:Microsoft Visual C++ 6.0ORACLE 8i (8.1.7) 当前版本:1.0 (041221) 声明:本文所述的某些操作可能对系统产生重大影响,请慎重操作!本人不对此产生的任何后果负责! 在VC++开发环境中整合Pro*C/C++Pro*C/C++为C/C++语言访问ORACLE数据库提供了极大的方便,但是,在编译的时候往往需要在命名行模式下编译pc文件,而目前多数开发都是在VC++这种整合开发环境中完成的,要在两者之间不停的切换,不

在团队开发环境中使用 Visual Studio .NET (二)

脱机时签入文件 不可能在脱机时签入文件:因为您未连接到网络,签入命令未启用.这是故意设置的,这样可以在项目重新联机时方便地查看哪些文件在脱机时被签出. 进入联机状态 这与进入脱机状态基本上相同.若要使解决方案及其项目联机,请在"File"菜单上,单击"Source Control",然后单击"Change Source Control...".显示的对话框与进入脱机状态时相同.选择"Connected"即可使解决方案和项目联机

Linux集群和自动化维3.7.1 开发环境中的Fabric应用实例

3.7 Fabric应用实例 3.7.1 开发环境中的Fabric应用实例 笔者公司在开发环境下使用的都是Xen和KVM虚拟机器,有不少数据,因为是内网环境,所以直接用root和SSH密码连接.系统统一为CentOS 6.4 x86_64,内核版本为2.6.32-358.el6.x86_64,Python版本为2.6.6. 实例1,同步Fabric跳板机的/etc/hosts文件,脚本如下: #!/usr/bin/python # -*- coding: utf-8 -*- from fabri

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改   [文章摘要]         Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中.        本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法.   [关键词]          VC++

如何在rails开发环境中取得上下文路径

问题描述 如何在rails开发环境中取得上下文路径下面是C#的写法string contextPath = Request.ApplicationPath;求教谢谢!先 解决方案 使用RAILS_ROOT常量解决方案二:查看一下environment.rb就知道了

使用xhprof在开发环境中测试php性能

以百分之一的概率产生测试数据,尽量不影响正式环境效率. class XHProf {     // private $XHProfPath = 'xhprof/';     private $XHProfPath = '/usr/local/apache/htdocs/xhprof/';     private $applicationName = 'sias_application';     private $sampleSize = 100;     private static $ena