Docker五大优点:持续集成、版本控制、可移植性、隔离性和安全性

 

随着Docker技术的不断成熟,愈来愈多的企业开始考虑使用Docker。Docker有不少的优点,本文主要讲述了Docker的五个最重要优点,即持续集成、版本控制、可移植性、隔离性和安全性。

对于Docker,应该不须要进行详细的介绍了。它是最火热的开源项目之一,经过在容器中增长一个抽象层(a layer of abstraction),就能够将应用程序部署到容器中。在看似稳定而成熟的场景下,使用Docker的好处愈来愈多。在这篇文章中,我不谈论Docker是什么或者Docker是怎么工做的,取而代之,我会提出使用这个不断成长的平台的五大好处。java

持续部署与测试

Docker在开发与运维的世界中具备极大的吸引力,由于它能保持跨环境的一致性。在开发与发布的生命周期中,不一样的环境具备细微的不一样,这些差别多是因为不一样安装包的版本和依赖关系引发的。然而,Docker能够经过确保从开发到产品发布整个过程环境的一致性来解决这个问题*Docker容器经过相关配置,保持容器内部全部的配置和依赖关系始终不变。最终,你能够在开发到产品发布的整个过程当中使用相同的容器来确保没有任何差别或者人工干预。

使用Docker,你还能够确保开发者不须要配置彻底相同的产品环境,他们能够在他们本身的系统上经过VirtualBox创建虚拟机来运行Docker容器。Docker的魅力在于它一样可让你在亚马逊EC2实例上运行相同的容器。若是你须要在一个产品发布周期中完成一次升级,你能够很容易地将须要变动的东西放到Docker容器中,测试它们,而且使你已经存在的容器执行相同的变动。这种灵活性就是使用Docker的一个主要好处。和标准部署与集成过程同样,Docker可让你构建、测试和发布镜像,这个镜像能够跨多个服务器进行部署。哪怕安装一个新的安全补丁,整个过程也是同样的。你能够安装补丁,而后测试它,而且将这个补丁发布到产品中。node

多云平台

Docker最大的好处之一就是可移植性。在过去的几年里,全部主流的云计算提供商,包括亚马逊AWS和谷歌的GCP,都将Docker融入到他们的平台并增长了各自的支持。Docker容器能运行在亚马逊的EC2实例、谷歌的GCP实例、Rackspace服务器或者VirtualBox这些提供主机操做系统的平台上。举例来讲,若是运行在亚马逊EC2实例上的Docker容器可以很容易地移植到其余几个平台上,好比说VirtualBox,而且达到相似的一致性和功能性,那这将容许你从基础设施层中抽象出来。除了AWS和GCP,Docker在其余不一样的IaaS提供商也运行的很是好,例如微软的Azure、OpenStack和能够被具备不一样配置的管理者所使用的Chef、Puppet、Ansible等。git

环境标准化和版本控制

经过上面的讨论,Docker容器能够在不一样的开发与产品发布生命周期中确保一致性,进而标准化你的环境。除此以外,Docker容器还能够像git仓库同样,可让你提交变动到Docker镜像中并经过不一样的版原本管理它们。设想若是你由于完成了一个组件的升级而致使你整个环境都损坏了,Docker可让你轻松地回滚到这个镜像的前一个版本。这整个过程能够在几分钟内完成,若是和虚拟机的备份或者镜像建立流程对比,那Docker算至关快的,它可让你快速地进行复制和实现冗余。此外,启动Docker就和运行一个进程同样快。docker

隔离性

Docker能够确保你的应用程序与资源是分隔开的。几个月前,Gartner发表了一篇报告,这份报告说明了运行Docker 容器进行资源隔离的效果和虚拟机(VM)管理程序同样的好,可是管理与控制方面还须要进行完善。

咱们考虑这样一个场景,你在你的虚拟机中运行了不少应用程序,这些应用程序包括团队协做软件(例如Confluence)、问题追踪软件(例如JIRA)、集中身份管理系统(例如Crowd)等等。因为这些软件运行在不一样的端口上,因此你必须使用Apache或者Nginx来作反向代理。到目前为止,一切都很正常,可是随着你的环境向前推动,你须要在你现有的环境中配置一个内容管理系统(例如Alfresco)。这时候有个问题发生了,这个软件须要一个不一样版本的Apache Tomcat,为了知足这个需求,你只能将你现有的软件迁移到另外一个版本的Tomcat上,或者找到适合你现有Tomcat的内容管理系统(Alfresco)版本。

对于上述场景,使用Docker就不用作这些事情了。Docker可以确保每一个容器都拥有本身的资源,而且和其余容器是隔离的。你能够用不一样的容器来运行使用不一样堆栈的应用程序。除此以外,若是你想在服务器上直接删除一些应用程序是比较困难的,由于这样可能引起依赖关系冲突。而Docker能够帮你确保应用程序被彻底清除,由于不一样的应用程序运行在不一样的容器上,若是你不在须要一款应用程序,那你能够简单地经过删除容器来删除这个应用程序,而且在你的宿主机操做系统上不会留下任何的临时文件或者配置文件。

除了上述好处,Docker还能确保每一个应用程序只使用分配给它的资源(包括CPU、内存和磁盘空间)。一个特殊的软件将不会使用你所有的可用资源,要否则这将致使性能下降,甚至让其余应用程序彻底中止工做。安全

安全性

如上所述,Gartner也认可Docker正在快速地发展。从安全角度来看,Docker确保运行在容器中的应用程序和其余容器中的应用程序是彻底分隔与隔离的,在通讯流量和管理上赋予你彻底的控制权。Docker容器不能窥视运行在其余容器中的进程。从体系结构角度来看,每一个容器只使用着本身的资源(从进程到网络堆栈)。

做为紧固安全的一种手段,Docker将宿主机操做系统上的敏感挂载点(例如/proc和/sys)做为只读挂载点,而且使用一种写时复制系统来确保容器不能读取其余容器的数据。Docker也限制了宿主机操做系统上的一些系统调用,而且和SELinux与AppArmor一块儿运行的很好。此外,在Docker Hub上可使用的Docker镜像都经过数字签名来确保其可靠性。因为Docker容器是隔离的,而且资源是受限制的,因此即便你其中一个应用程序被黑,也不会影响运行在其它Docker容器上的应用程序。服务器

结语

将云计算一块儿考虑,上面提到的这些好处可以清楚地证实Docker是一个有效的开源平台。使用Docker的好处愈来愈多,今天我只想强调这前五大好处。若是你使用了Docker,欢迎分享你的使用案例或者任何你以为使用Docker带来的好处。

原文连接:5 Key Benefits of Docker: CI, Version Control, Portability, Isolation and Security(翻译:肖远昊 校对:魏小红)网络

 

转载:http://dockone.io/article/389运维

相关文章
相关标签/搜索