32 views

为什么要使用DOCKER和容器

By | 2019年1月10日

1981年出版的一本名为“ Nailing Jelly to a Tree ”的书将软件描述为“模糊不清,难以牢牢掌握。”1981年就是如此,自那以后近四十年来也是如此。无论是您购买的应用程序还是自己构建的应用程序,软件仍然难以部署,难以管理且难以运行。

Docker容器提供了一种控制软件的方法。您可以使用Docker来封装应用程序,使其部署和运行时出现问题 – 如何在网络上公开它,如何管理其对存储和内存的使用以及I / O,如何控制访问权限等在应用程序本身之外,以及在所有“容器化”应用程序中保持一致的方式。您可以在安装了Docker运行时的任何兼容OS的主机(Linux或Windows)上运行Docker容器。

除了这种方便的封装,隔离,可移植性和控制之外,Docker还提供许多其他好处。Docker容器很小(兆字节)。他们立即开始。它们有自己的内置机制,用于版本控制和组件重用。它们可以通过公共Docker Hub或私有存储库轻松共享。

我们的新游戏网站现场直播!Gamestar涵盖游戏,游戏小工具和装备。订阅我们的时事通讯,我们会将最好的内容直接发送到您的收件箱。在这里了解更多。
在本文中,我将探讨Docker容器如何使构建和部署软件变得更容易 – 容器解决的问题,它们如何解决它们,何时它们是问题的正确答案,何时不是。

在Docker容器之前
多年以来,企业软件通常部署在“裸机”(即安装在完全控制底层硬件的操作系统上)或虚拟机中(即安装在共享底层硬件的操作系统上)与其他“客户”操作系统)。当然,在裸机上安装使得软件难以移动并且难以更新 – 这两个限制使得IT难以灵活地响应业务需求的变化。

然后虚拟化出现了。虚拟化平台(也称为“虚拟机管理程序”)允许多个虚拟机共享单个物理系统,每个虚拟机以独立的方式模拟整个系统的行为,并具有自己的操作系统,存储和I / O. 。现在,IT可以更有效地响应业务需求的变化,因为可以克隆,复制,迁移虚拟机以及向上或向下旋转以满足需求或节省资源。

虚拟机还有助于降低成本,因为可以将更多虚拟机整合到更少的物理机器上。运行较旧应用程序的旧系统可以转换为虚拟机并实际退役,以节省更多资金。

但虚拟机仍然存在一些问题。虚拟机很大(千兆字节),每个虚拟机都包含一个完整的操作系统。只有这么多虚拟化应用程序可以合并到一个系统上。配置VM仍然需要相当长的时间。最后,VM的可移植性是有限的。在某一点之后,虚拟机无法提供快速发展的企业所要求的速度,灵活性和节省。

Docker容器的好处
容器的工作方式有点像虚拟机,但更具体,更细致。它们隔离了单个应用程序及其依赖项 – 应用程序运行所需的所有外部软件库 – 来自底层操作系统和其他容器。所有容器化应用程序共享一个通用的操作系统(Linux或Windows),但它们彼此区分开来,并且与整个系统区分开来。

Docker容器的好处出现在很多地方。以下是Docker和容器的一些主要优点:

Docker可以更有效地使用系统资源
容器化应用程序的实例使用的内存远远少于虚拟机,它们可以更快地启动和停止,并且可以在主机硬件上更密集地打包它们。所有这些都相当于减少了对IT的支出。

成本节约将取决于正在使用的应用程序以及它们可能的资源密集程度,但容器总是比VM更有效。还可以节省软件许可证的成本,因为您需要更少的操作系统实例来运行相同的工作负载。

Docker可实现更快的软件交付周期
企业软件必须快速响应不断变化的条件。这意味着既可以轻松扩展以满足需求,又可以轻松更新以根据业务需求添加新功能。

Docker容器可以轻松地将具有新业务功能的新版本软件快速投入生产,并在需要时快速回滚到以前的版本。它们还可以更轻松地实施蓝/绿部署等策略。

Docker支持应用程序可移植性
在防火墙后面运行企业应用程序的地方很重要,为了保持紧密和安全; 或者在公共云中,以便于公众访问和高弹性的资源。因为Docker容器封装了应用程序运行所需的所有内容(并且只包含那些内容),所以它们允许应用程序在环境之间轻松移植。任何安装了Docker运行时的主机 – 无论是开发人员的笔记本电脑还是公共云实例 – 都可以运行Docker容器。

Docker为微服务架构而闪耀
轻量级,可移植且独立的Docker容器使得在前瞻性思路中构建软件变得更加容易,因此您不会试图用昨天的开发方法解决明天的问题。

其中一个软件模式容器使微服务变得更容易,其中应用程序由许多松散耦合的组件构成。通过将传统的“单片”应用程序分解为单独的服务,微服务允许业务线应用程序的不同部分单独扩展,修改和服务 – 由不同的团队和不同的时间表,如果它适合需要商业。

容器不需要实现微服务,但它们非常适合微服务方法和敏捷开发过程。

Docker容器无法解决的问题
关于容器的首要考虑因素是适用于任何软件技术的同一条建议:这不是一个灵丹妙药。Docker容器本身无法解决所有问题。特别是:

Docker无法解决您的安全问题
默认情况下,容器中的软件比裸机上运行的软件更安全,但这就像说门锁的房子比门打开的房子更安全。它没有说明邻居的状况,可见的贵重物品对小偷的诱惑,居住在那里的人们的日常生活等等。容器可以为应用程序添加一层安全性,但仅作为在上下文中保护应用程序的一般程序的一部分。

Docker不会将应用程序神奇地转变为微服务
如果您将现有应用程序容器化,可以减少其资源消耗并使其更易于部署。但它不会自动更改应用程序的设计,也不会自动更改应用程序与其他应用程序的交互方式。这些好处只能通过开发人员的时间和精力来实现,而不仅仅是将所有内容都移到容器中。

将一个旧式的单片或SOA风格的应用程序放在一个容器中,最后,你最终得到一个容器中的旧应用程序。这对你的工作没有任何帮助; 如果有的话,它可能会减少它的用处。

Docker不是虚拟机的替代品
一个持久的容器神话是它们使VM过时了。即用于在虚拟机上运行许多应用程序可以被移动到一个容器,但是,这并不意味着所有的人能够或者应该。例如,如果您所在的行业有严格的法规要求,您可能无法为VM交换容器,因为VM提供的隔离比容器更多。

Docker容器的情况
企业开发工作以隐藏和缓慢响应变化而臭名昭着。企业开发人员一直在反对这些限制因素 – IT对他们施加的限制,以及整个企业对他们的要求。Docker和容器为开发人员提供了更多他们渴望的自由,同时提供了构建业务应用程序的方法,可以快速响应不断变化的业务条件。

发表评论

电子邮件地址不会被公开。 必填项已用*标注