前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么说Linux容器对于物联网而言很重要

为什么说Linux容器对于物联网而言很重要

作者头像
Noah____________________
发布2018-05-02 11:36:40
1.9K0
发布2018-05-02 11:36:40

Linux容器已成为云开发和部署工作流中的标准工具。使用它的好处有很多,包括跨平台的可移植性,最小的开销,以及开发人员对他们代码运行方式的更多控制。容器的普及率持续增长:Docker是一个开源的容器引擎,尤其受到了高度关注,一项研究显示,在一年中它的采用率提高了40%。很明显,容器很重要,我们认为它们对于物联网来说更是如此。

resin.io上,我们相信Linux容器标志着嵌入式世界第一款实用虚拟化技术的到来。在Raspberry Pi(树莓派)上运行Docker可在启用对于任何物联网项目的成功都至关重要的附加特性的同时为您提供在云中运行Docker的绝大部分好处:隔离的应用程序故障,高效更新以及灵活而熟悉的工作流。

为什么Linux容器用于物联网?

隔离的应用程序故障

在远程互联网设备的世界中,停机时间特别昂贵。与云实例不同,如果设备停机,您则不能再启动另一个设备。该设备可能是无人驾驶飞机,汽车,某人家中的智能锁或油田的传感器站。物联网设备通常物理上无法访问,因此手动重启并不容易。容器则可以在出现问题时恢复。

这个怎么用?它本质上是将设备的核心操作与应用层分离的问题,确保应用程序故障不会影响设备在网络上进行通信的能力。例如,所有resin.io设备都运行resinOS,这是一个包含Docker容器引擎的裸机主机操作系统:

该主机操作系统管理两个容器:一个运行管理程序,这是一个确保设备运行正常且可以连接到resin.io的代理程序,另一个运行用户应用程序,并使用它自己的基本操作系统。主机操作系统与硬件watchdog(看门狗)连接,确保在低级软件出现任何问题时重新启动。最终,这会使超出该级别的任何事情成为可以远程解决的应用程序问题。

高效更新

容器提供的另一个优点是能够更好地管理更新,包括更低的停机频率和减少磁盘空间的使用率。作为一个例子,让我们来看看resinOS如何处理更新。

采用备用选项应用更新的传统方法是A / B分区策略。这将驱动器分成两部分,其中一半未使用。可以下载更新并安装在空分区中,而不必删除活动的操作系统,也不会丢失与网络的连接。如果有任何问题切换到更新的操作系统,则可以使用上一个工作版本重新启动设备,从而大大降低了丢失网络的可能性。

使用resinOS,运行用户应用程序所需的大部分内容都打包在Docker容器中,并且可以在没有任何停机时间的情况下进行更新。这减少了主机操作系统所需的更新频率。当需要进行主机操作系统更新时,仍然使用A / B分区策略,但主机操作系统的最小占用空间允许该更新分区更小。

灵活而熟悉的工作流

容器在缩小云和嵌入式工作流程之间的差距方面起着重要作用。Linux是一种广泛使用且高度可定制的操作系统,而Linux容器提供了一组标准的核心功能,同时让开发人员可以自由选择他们已经熟悉的工具,库和配置。云开发人员期望这种灵活性,并将其扩展到嵌入式设备,使更多开发人员能够构建和支持物联网项目。通过在云端和边缘设备之间调整底层技术,容器可以减少支持混合工作流的开发人员和组织的摩擦。

少了什么东西?

Linux容器为物联网用例提供了明显的优势,但是在该技术适用于远程设备之前还有一些事情需要考虑。幸运的是,像Docker这样的开源项目允许将底层应用程序视为一个平台,为用例特定的修改留下空间。像Docker Hub这样的公共存储库允许轻松共享容器映像,从而形成强大的应用程序生态系统。

以下是resin.io为使Docker适应物联网用例所做的一些改进:

支持各种各样的设备

Docker开箱即用,主要面向云服务器和台式机。为了在嵌入式设备领域发挥作用,它需要在更多种设备上运行,每种设备都有其自己特定的硬件要求。为了解决这个问题,resin.io为十几个支持的设备发布了不同的主机操作系统镜像。虽然主机操作系统跨设备具有相同的核心功能,但要考虑到具体的特定情况,以便充分利用设备的功能。

二进制增量

Docker使用一个图层系统来减少更新的大小和构建时间。更新镜像时,只需更改已修改的图层。在可靠的网络连接情况下,这种方式运行得很好,但它仍然需要比3G蜂窝网络上的远程设备更理想的带宽。Resin.io可以选择增量更新 - 在构建的容器和正在运行的容器之间建立一个完整的二进制比较,仅差异内容被下载到设备上。在典型的场景下,我们观察到执行相同更新所需带宽的10-100倍的提升。

小型容器引擎

标准Docker容器引擎包含一些主要适用于云用例的功能。使用我们自定义的兼容Docker的容器引擎balena,我们已经删除了许多这样的容器引擎,使得容器引擎少于25 MB,而标准引擎超过100 MB。当带宽和存储空间是高度受限的资源时,这个尺寸差异很重要。

电源和网络故障的弹性恢复

远程设备和云服务器的运营预期完全不同。嵌入式设备的电源和网络故障频繁得多,运行在这些设备上的软件需要对这些事件具有适应能力。ResinOS以考虑到这一点的方式管理容器,包括突然切断电源时对容器生命周期的特殊考虑以及通过不可靠网络进行更新的过程。

学习更多

与任何技术一样,理解这些好处的最好方法是自己尝试一下。这里有一些资源让你开始使用Docker,resin.io和物联网世界:


译者注:

Raspberry Pi(树莓派):为学习计算机编程教育设计的一种微型电脑

watchdog:Linux监视系统运行的软件

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么Linux容器用于物联网?
    • 隔离的应用程序故障
      • 高效更新
        • 灵活而熟悉的工作流
        • 少了什么东西?
          • 支持各种各样的设备
            • 二进制增量
              • 小型容器引擎
                • 电源和网络故障的弹性恢复
                • 学习更多
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档