前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker带来的五大益处:CI,版本控制,可移植性,隔离性和安全性

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

作者头像
Techeek
发布2018-01-09 10:12:09
2.1K0
发布2018-01-09 10:12:09
举报
文章被收录于专栏:云计算云计算

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,请自由地分享你所体会过的任何事例或是益处吧。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 持续部署和测试
  • 多种云平台
  • 环境标准化和版本控制
  • 隔离
  • 安全
  • 总结
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档