使用 Docker 容器快速开发物联网应用
Docker 容器
Docker 是一个开源的编程平台,它将软件包创建和运行为标准化的容器单元。它提供了将单个应用程序与基础设施隔离的能力,使开发人员能够轻松地在不同阶段移动、部署、更新和删除应用程序。
从根本上说,Docker 是一个工具容器,它提供了一个单一的编程接口,并通过简单的命令和自动化技术来构建高度可靠的容器化应用程序。
许多制造企业正在开展利用现代物联网的数字化转型项目——例如,电力和水资源分配以及其他现代工业控制系统。这些系统旨在并行运行许多应用程序,以及许多设备和硬件平台。
开发人员可以通过使用 Docker 和容器化方法,大幅减少编写代码到生产环境部署之间的延迟和工作量。每个 Docker 容器都在隔离环境中运行一个虚拟化的应用程序。当容器出现故障或内部应用程序崩溃时,其他容器将继续运行而不会受到干扰。此功能还使开发人员能够快速应用安全修复和更新,从而最大限度地减少在集成大量物联网设备和应用程序期间出现异常错误或不一致的系统冲突。
帮助您创建出色的物联网解决方案的功能
安全性
安全性是物联网中的一个主要方面。根据 Gartner 的说法,通过容器部署的应用程序比在裸机操作系统上部署的应用程序更安全。这是因为,即使容器的安全性受到损害,也不会影响主机操作系统上运行的其他容器,因为每个容器的基础上应用程序和客户机都是隔离的。
以下是与容器安全相关的几个要点:
资源隔离 - 容器在 PID、组织和其他命名空间级别提供更好的安全隔离。从构建的角度来看,每个容器都获得自己的一组资源,从处理到网络堆栈。
受限库和工具 - 容器包含应用程序所需的软件包。这使得攻击面最小化,并且限制了黑客使用的 Linux 操作系统工具的访问权限。
安全扫描 - Docker 还通过 Docker Cloud 和 Docker Hub 提供安全扫描服务。这些服务可以检查您的容器是否存在安全漏洞。
简单快速的物联网应用程序部署
使用 Docker 容器,您无需担心在操作系统上设置应用程序所需的底层环境。
容器通过包含运行所需的所有内容(代码、运行时、系统工具、系统库——任何可以在服务器操作系统上安装的内容)的完整文件系统来封装软件。
跨物联网设备的应用程序可移植性 - 应用程序及其所有环境(例如传感器特定的库)可以打包到一个容器中,独立于 Linux 分发版本的宿主版本、平台分发或部署模型。
简单的应用程序升级 - 要更新您的应用程序,您需要做的就是:在 Dockerfile 中进行更改,并用新映像替换旧容器。要回滚,只需用旧映像替换新映像即可。容器使修复软件错误变得非常简单。
简单性和更快的设计 - 用户可以获取他们的配置,将其放入代码中,并在没有任何问题的情况下进行部署。由于 Docker 可用于各种环境,因此基础设施的要求通常与应用程序的环境无关。
软件版本控制和组件重用 - 容器允许您控制新代码版本中软件错误引起的问题。您可以跟踪容器的版本,检查差异或回滚到以前的版本。容器重用来自初始层的组件,这使得更新过程变得非常轻量级和快速。
共享 - 您可以使用远程存储库在网络中共享您的容器。有一些服务提供商为此目的提供了一个库。设计您自己的私有容器存储库也是可能的。
多云平台
Docker 最大的优势之一是可移植性。您可以本地创建您的物联网应用程序,并在您首选的公共云基础设施中进行部署。Docker 容器可以在任何云实例中运行,前提是主机操作系统支持 Docker。在过去几年中,所有主要的云计算提供商(包括 Amazon、Google 和 Microsoft)都采用了 Docker 的可用性并添加了各自的支持。
以下是部分以某种形式或方式支持 Docker 容器的公共云提供商:
Docker Cloud - Docker 的官方云服务,用于集群配置、托管注册表服务、持续部署 Docker 应用程序等等。
Amazon EC2 容器服务 - Amazon EC2 容器服务 (ECS) 是一种高度可扩展、高性能的容器编排服务,支持 Docker 容器,并允许您轻松地在 Amazon EC2 实例的托管集群上运行应用程序。
Microsoft Azure 容器服务 - 选择最适合您需求的工具和架构,以进行 Docker 容器编排和扩展操作。使用基于 Mesos 的 DC/OS、Kubernetes 或使用 Docker Swarm 和 Compose 来获得纯粹的 Docker 体验。
Google 针对 Docker 容器的容器引擎 - 由 Google 托管的单点 Kubernetes 集群。Container Engine 是一个强大的集群管理器和编排框架,用于运行您的 Docker 容器。
Oracle 容器云服务 - 它提供了一种简单快速的方法来创建企业级容器基础设施。
微服务
Docker 容器为微服务提供了极佳的平台。在物联网领域,与单体应用程序堆栈相比,微服务驱动的架构更有效。轻量级和原子化的微服务可以轻松地处理最小的资源开销。
以下是将物联网微服务运行在 Docker 上的一些优势:
可扩展性 - 微服务架构支持水平和垂直扩展框架,从而为物联网组织带来长期优势。
编程语言无关 - 每个微服务都可以使用不同的编程语言(如 Java、C、C++、Python 等)开发,而不管它们是否通过 Web API(REST/SOAP)或消息代理(MQTT、AMQP 等)进行通信。
简单的故障排除 - 由于微服务故障,与单体应用程序相比,隔离和解决问题变得更加容易。考虑到我们部署物联网应用程序的规模,这可能是最有用的功能之一。
结论
Docker 容器具有快速简单的部署和较小的容器映像占用空间等特性,可能是物联网的关键推动力。使用微服务架构开发的物联网应用程序将从 Docker 中受益最大。