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

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

作者头像
Xiaoxing Ye
发布2018-01-04 15:41:37
6.3K0
发布2018-01-04 15:41:37

我相信 Docker 不需要我过多介绍,它是目前最热门的开源项目之一。您可以使用 Docker 在容器中添加一个抽象层以部署不同的应用程序。在 Docker 生态的不断发展之下,Docker 的优点将会不断增加。在这篇文章中,我不会讨论 Docker 是什么以及它的工作原理,而将概述使用 Docker 这个不断发展的平台的五大优点。

持续部署和测试

Docker 因其能在不同环境中保持一致性,在开发者及运维中发展迅猛。在整个开发和发布的生命周期中,不同环境之间总会有细微的差别,除非您拥有自己的私有存储库,并且有严格的环境检查。这些差异可能是不同的软件包版本或依赖关系所造成的。而 Docker 可以通过确保从开发到生产的环境一致性来解决这个问题。 Docker 在容器内部维护所有配置和依赖关系。因此,您可以从开发到生产使用相同的容器,确保没有环境之间的差异或人工干预。

使用 Docker 容器,您还可以确保开发人员不再需要配置一套与生产环境相同的环境。现在他们可以使用自己的系统在 VirtualBox 上运行 Docker 容器。 Docker 的优点在于,您可以在不同实例上运行相同的容器。如果您需要在产品发布周期中执行升级,只需要对 Docker 容器进行必要的更改,对其进行测试,并对现有容器推送相同的更改。这种灵活性是使用 Docker 的关键优势。正如标准的部署和集成过程一样,Docker 允许您构建、测试和发布一个跨不同服务器的应用映像。即使有新的安全补丁发布,您只需要采用同样的处理方式,应用该补丁,测试并将其发布到生产环境中。

多云服务平台支持

Docker 最大的优点之一就是可移植性。在过去几年中,包括亚马逊网络服务(AWS)和谷歌计算平台(GCP)在内的所有主要云计算提供商都已经认可了 Docker 的可用性并提供了支持。 Docker 容器可以在例如 Amazon EC2 实例、Google Compute Engine 实例,Rackspace 服务器或 VirtualBox 中运行,只需要主机所运行的操作系统支持 Docker。这样,运行在某个云服务实例上的容器可以很容易地在各个环境之间移植,比如移植到 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)。

两种选择都有利有弊。幸运的是,在 Docker 中,您不必这样做。 Docker 确保每个容器都有自己的资源,并与其他容器相互隔离。您可以为不同的应用程序运行完全不同的基础设施。除此之外,有时从服务器中移除应用程序相当困难,甚至可能导致依赖关系的冲突。但是,由于现在每个应用程序都在自己的容器上运行,Docker 可帮助您安全地移除应用程序。如果您不再需要某个应用程序,只需要简单地删除运行它的容器。它不会在主机上留下任何临时或配置文件。

除了这些优势之外,Docker 还确保每个应用程序只使用分配给它们的资源(CPU,内存和磁盘空间)。资源耗尽通常会导致性能下降或导致其他应用程序完全不可用。有了资源隔离,不再会有某个特定的应用程序占用所有的可用资源,提高了服务的整体可用性和稳定性。

安全

如上所述,甚至 Gartner 这样的大型咨询公司都承认,Docker 正在快速发展。从安全的角度来看,Docker 可以确保在不同容器上运行的应用程序之间相互隔离,使您可以完全控制容器之间的交互。Docker 容器不可以查看在另一个容器内运行的进程。从架构的角度来看,每个容器都只能使用自己被分配的资源,包括任务处理和网络堆栈,意味着在默认情况下它们不能访问其他容器的 sockets 或接口。

作为提高安全性的手段,Docker 在容器中将主机的敏感挂载点(例如 /proc 和 /sys)挂载为只读,并使用了一套写入时复制的文件系统来确保容器间不能读取彼此的数据。它还限制容器内的应用程序对主机进行系统调用,而且还与 SELinux 和 AppArmor 这样的安全措施保持良好兼容。此外,Docker Hub 上所有的 Docker 镜像都有数字签名,以确保用户使用的镜像是完整、未被第三方修改的。由于 Docker 容器之间是隔离的,而且容器的资源是有限的,即使您的一个应用程序被入侵或崩溃,也不会影响在其他 Docker 容器上运行的应用程序。

最后的注意

与云计算相结合,上面提到的优点说明了为何 Docker 是一个有效的开源平台。虽然使用 Docker 的优点很多,我今天只是想强调所列出来的前五大优点。如果您使用 Docker,请务必分享您的使用案例或者您所享受到的各种好处。

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