Docker带来的五大益处:CI,版本控制,可移植性,隔离性和安全性

Docker技术已经不需要过多介绍。它是当下最热门的开源项目之一,让你可以在容器内部署应用(通过增加抽象文件层)。长期看来,Docker技术基本已经趋于成熟,使用Docker带来的益处将会不断增加。在这篇文章中,我们不讨论Docker是什么以及它是如何工作的,而是概述5个使用这项不断成长的技术所带来的最大的好处。

持续部署和测试

Docker的跨环境一致性在开发界已经获得了广泛认可。通常情况下,开发阶段和正式发布的环境之间总会有细微的差异。除非你拥有自己的私有仓库,并严格检查。这些差异可能是由包版本或依赖的不同而引起的。不过,Docker可以通过维护开发和发布环境的一致性来解决这些差异。 Docker在容器内部维护所有配置和依赖关系。因此,只要在开发和生产过程中使用同样的容器,就可以保证避免出现环境的差异或是不必要的人为干涉。

使用Docker容器,开发人员就不用专门配置相同的生产环境。他们可以使用自己的系统,在VirtualBox中运行Dokcer容器。 Docker的美妙之处在于,你可以在Amazon EC2的实例上运行相同的容器。如果你需要在产品发布周期中进行升级,只要对Docker容器做出必要的更改,进行测试,然后将相同的更改应用到已经存在的容器中即可。这种灵活性是Docker的主要优点,和标准的部署与集成过程一样,Docker也支持跨服务器地进行构建、测试和镜像发布。即使是要应用新的安全补丁,过程也不会发生变化,你只需要应用该补丁,测试,然后将其发布到生产环境中即可。

多种云平台

可移植性是Docker技术所带来的最大的益处之一。在过去的几年中,包括亚马逊网络服务(AWS)和谷歌计算平台(GCP)在内的所有主要云计算提供商都已经接受了Docker的可用性并添加了个人用户的支持。 Docker容器可以在Amazon EC2实例,Google Compute Engine实例,Rackspace服务器或是VirtualBox中运行,只要宿主机操作系统支持Docker。这种情况下,一个运行在Amazon EC2实例上的容器可以很容易地移植到各种环境上,比如VirtualBox,并保持相同的一致性和功能。这为你提供了基础设施层的抽象。除了AWS和GCP之外,Docker在其他各种IaaS供应商(如Microsoft Azure和OpenStack)提供的平台上也能良好的工作,并且可以与各种配置管理器(如Chef,Puppet和Ansible)一起使用。

环境标准化和版本控制

正如上述所讨论的,使用Docker容器保证了跨开发环境和发布周期的一致性,使你的运行环境标准化。除此之外,Docker容器就像GIT仓库一样,允许你向Docker镜像提交改动并且对它们进行版本控制。假设你执行的一次组件升级破坏了整个环境,你可以很容易的回滚到Docker镜像的历史版本,整个过程可以在几分钟内完成。与虚拟机备份和镜像创建进程相比,Docker速度很快,可以快速创建拷贝并实现冗余。另外,启动Docker镜像就和运行进程一样快。

隔离

Docker能够确保你的应用和资源被分开隔离。几个月前,Gartner发布了一份报告,指出在资源隔离方面,Docker容器和虚拟机管理程序一样好,但是在管理和监控方面还有很多工作要做。

想象一个需要在虚拟机上运行多个应用的场景,这些应用可能是团队协作软件(如Confluence),问题跟踪软件(如JIRA),集中身份管理系统(如Crowd)等。由于这些应用都监听不同的端口,你不得不使用Apache和Nginx为它们做反向代理。目前为止,一切都还很好。但随后你需要部署一个内容管理系统(如Alfresco),而它需要一个与之前环境中版本不同的Apache Tomcat,这就导致了问题。为了解决这个问题,你得把之前部署的应用迁移到这个版本的Tomcat上来,或是想办法让这个内容管理系统(Alfresco)在已经部署的Tomcat版本上运行。

幸运的是,在Docker中,你完全不必这样做。 Docker确保每个容器都有自己的资源,并与其他容器隔离。你可以在不同的容器上分离地运行不同的应用(它们使用完全不同的运行堆栈)。除此之外,从服务器上移除应用原本是件非常困难的事,而且可能引起依赖冲突,但Docker可以帮助你干净地移除应用,因为每个应用都运行在它们自己的容器里。如果你不再需要一个应用,只需要删除它的容器就可以了,这不会在你的系统上残留任何临时或配置文件。

除了上面这些优势,Docker还可以控制每个应用只使用分配给它们的资源(CPU,内存和磁盘空间)。这使得任何应用都不会独占所有的可用资源,导致性能恶化或是其他应用的停机。

安全

正如上文提到的那样,Docker正在以很快的速度发展,Gartner也承认了这一点。从安全的角度来看,Docker使运行在不同容器中的应用之间完全隔离,让你可以完全控制流量并管理应用。Docker容器不允许访问其他容器中运行的进程。从架构的角度来看,每个容器都拥有一套自己的独立资源,从处理到网络堆栈。

作为提高安全性的手段,Docker将宿主机的敏感挂载点(如/proc/sys)设置为只读,并使用写时复制文件系统来确保容器不能读取彼此的数据。它还限制了宿主机上的系统调用,能够和SELinux与AppArmor良好地共同运作。此外,Docker Hub上可用的Docker镜像也都包含了数字签名以确保真实性。由于Docker容器是隔离的,资源是受到限制的,即便你的一个应用被黑客破坏入侵,也不会影响到其他Docker容器中运行的应用。

总结

结合云计算,上述提到的好处绝对能够证明Docker是一个优秀而有效的开源平台。虽然还可以列出很多好处,但今天我只想重点强调最有益的5点,如果你使用Docker,请自由地分享你所体会过的任何事例或是益处吧。

本文的版权归 Marky Lumin 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

蓝底白字到图形界面 主板BIOS发展简记

本文转载:http://mb.zol.com.cn/229/2295738.html

1631
来自专栏大魏分享(微信公众号:david-share)

如何将Openshift对接CloudForms云管平台?

Openshift对接云管平台的目的 Openshift是红帽一款优秀的PaaS解决方案。目前国内的行业客户,如金融、电信、制造等,在云平台的构建上,逐渐从Ia...

4125
来自专栏CSDN技术头条

谈DevOps中的容器安全

【编者按】对比虚拟机,Docker在体量等方面拥有显著的优势。然而,当DevOps享受Docker带来扩展性、资源利用率和弹性提升的同时,其所面临的安全隐患同样...

2066
来自专栏达摩兵的技术空间

docker入门学习(1)

1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docke...

1082
来自专栏Laoqi's Linux运维专列

如通何俗懂易释解Docker是什么?

4243
来自专栏我是攻城师

为什么要用Docker?

3646
来自专栏北京马哥教育

利用Docker开启持续交付之路

持续交付即Continuous Delivery,简称CD,随着DevOps的流行正越来越被传统企业所重视。持续交付讲求以短周期、小细粒度,自动化的方式频繁...

3895
来自专栏A周立SpringCloud

Docker 17.03系列教程(一)Docker EE/Docker CE简介与版本规划

近日,Docker发布了Docker 17.03。进入Docker 17时代后,Docker分成了两个版本:Docker EE和Docker CE,即:企业版(...

3247

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

我相信 Docker 不需要我过多介绍,它是目前最热门的开源项目之一。您可以使用 Docker 在容器中添加一个抽象层以部署不同的应用程序。在 Docker 生...

4408
来自专栏SDNLAB

Kubernetes正式支持Containerd 1.1版

1914

扫码关注云+社区

领取腾讯云代金券