Docker
什么是 Docker?
基于开源技术的 Docker 平台允许开发人员在容器中构建应用,方便其在开发期间更轻松地修改和更新应用。
开发人员为何使用 Docker?
Docker 可让开发人员在名为容器的虚拟化环境中打包和运行应用。独有的隔离功能和安全性允许其在单一主机系统上同时独立运行多个容器。Docker 会提供可管理容器生命周期的工具和平台。
容器为何有用?
容器为轻量型,包括运行应用所需的一切内容,可从主机基础设施提取软件。容器之间也相互隔离,整体系统因此更稳定。容器的存在,有助于将大项目分给多个开发团队,分散处理工作负载并加速部署。
Docker 如何运作?
Docker 利用 Linux 内核的多项功能来交付其功能。使用命名空间来提供容器。运行容器时,Docker 会为该容器创建命名空间集。这些命名空间会为容器提供隔离层。容器可在独立命名空间中全方位运行,其访问权也仅限该命名空间。
不同的是,虚拟机 (VM) 在硬件级别提取主机系统资源,而Docker 则在操作系统 (OS) 级别提取资源。通过在这个级别实现虚拟化,容器实例较 VM 更轻量、更快。
为何选择 Docker?
Docker 会简化和加速软件开发工作流程。其允许开发人员利用所选工具、应用堆栈和部署环境,并基于每个项目的特定需求自由地创新。
较之基于虚拟机监控程序的 VM 能运行的工作负载,轻量且快速的 Docker 可在同一个主机系统上运行更多工作负载。其尤其适用于高密度环境以及中小型部署环境,满足以更少资源完成更多任务的需求。
Docker 基于容器的平台让工作负载高度可移植。Docker 容器可以运行的环境包括开发人员的本地设备、内部部署物理环境或主机托管数据中心硬件、VM 实例、公有云平台或混合环境。可移植性也让开发人员能够动态管理工作负载,随业务需求而近乎实时地扩大规模或拆解应用和服务。
借助 Docker,开发人员能够设置本地环境以与动态服务器上的环境相匹配,利用不同配置运行多个开发环境。软件测试能够快速完成,以确认新改变能否在多种环境和条件下正常运作,为持续改进/持续开发 (CI/CD) 目标提供支持。
Docker 也可将大型开发项目分给多个 Agile 小团队,分散处理工作负载并加速部署。这类高效 DevOps 工作流程可协助公司更频繁地部署软件、更快地从错误中恢复,大大降低改变所导致的故障率。
如何部署与编排 Docker?
用户通过客户端与 Docker 互动。这个客户端会与管理主机上容器的后台流程通信,该流程也称为 Docker 守护程序。这个守护程序会跟踪与 Docker 环境相关的一切。
系统核心 Docker Engine 是一款应用,使用客户端-服务器架构且安装在主机上。主机提供用以执行和运行应用的环境。其包含 Docker 守护程序以及以下 Docker 对象:
- 映像 - 可用于构建容器的只读二进制模板。它们的元数据描述了容器的功能和需求。映像可单独用于构建容器或定制以添加其他元素并扩展当前配置。容器映像可在组织内部共享或与公众分享,可在开发人员之间实现协作。
- 容器 - 由其映像以及启动时提供的任何其他配置选项(例如,网络连接和存储选项)定义。容器只能访问映像中定义的资源,除非在将映像构建到容器时定义了其他访问权。
- 网络可让系统中相互隔离的容器相互通信。
- 容器中数据的存储默认为非持久型存储。一旦容器不再运行,存储也会消失。然而,Docker 的确会提供选项,例如,数据卷和存储插件,因此能够持久传输或存储数据。
Docker 客户端和守护程序可在同一个系统上运行,Docker 客户端也可与远程 Docker 守护程序连线。一个 Docker 客户端也可与多个 Docker 守护程序通信。Docker 客户端与 Docker 守护程序使用 REST API 并通过插槽或网络接口通信。
Docker 可应用在哪些领域?
Docker 可简化及加速工作流程,因此其可为软件开发团队提供许多优势;然而,其在几个场景中尤其实用。
采用微服务架构
许多组织想要在其数字化转型的过程中,替换原系统的整体式应用。整体式应用可作为单个单元运作,但是微服务架构可分解为一系列较小的独立单元。Docker 能够对这些微服务进行容器化,简化其交付和管理。容器化为各微服务提供其专属的隔离工作负载环境,各微服务因此可供独立部署和扩展。
将旧式应用移至容器
对于无法重新架构为微服务的应用,可以选择按现状将其移至容器。将 Docker 用于对应用进行容器化,可提升开发和测试的效率;简化部署和灾难恢复;在不与新应用冲突的情况下,运行旧式应用的多个实例。
部署机器学习 (ML)
能否大规模部署在生产中训练的模型是机器学习开发过程中的一个严峻挑战。Docker 利用支持 GPU 的 TensorFlow 等平台来简化 ML 应用的开发和部署。由于能够跨多部机器或通过云启动容器,以及利用编排技术管理所有容器,ML 应用的分布也得以精简。
服务器整合
与 VM 类似,Docker 的应用隔离功能允许组织整合多部服务器,进而节省成本。由于无需承担运行多个 OS(VM 环境中有此要求)的开销,Docker 实现的服务器整合密度高于 VM。
HPE 和 Docker 推出的解决方案
HPE 的 Docker Enterprise Edition 是一款支持商用的订阅包,具有在任何环境中实施容器所需的各种组件。Docker Basic Edition 包括容器引擎和编排工具。Standard Edition 增加了多个图像层和访问管理功能,而 Advanced Edition 甚至可以添加安全扫描和漏洞监控功能。
当您开始配置永久型卷时,仅需几个命令就可以利用 HPE 存储的简便性和恢复能力。HPE Nimble Storage 和 HPE 3PAR 全闪存、混合与辅助闪存阵列可以为容器环境提供性能和可扩展性。
HPE Ezmeral Runtime 是一款基于开源 Kubernetes 打造而成的统一应用容器平台,非常适合运行于内部部署、多个公有云、混合模式或边缘的任何基础设施上的云原生和非云原生应用。
这个平台可通过 HPE GreenLake ,采用即用即付模式、以即服务形式交付。HPE 工程师负责执行安装和配置,HPE 则会全面管理您的解决方案,提供用于获取支持的单点联系,以及熟悉您的环境与业务的技术团队。通过标准化构建的硬件和软件,您可以避免成本高昂的手动部署,并且可以在短短 14 天内将其交付到您的数据中心。