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

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监视系统运行的软件

本文的版权归 Noah____________________ 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

保护微服务需要知道的那些事

随着容器的持续流行,将应用改造成云上的微服务,对于很多希望IT运营更加敏捷高效的企业来说是显而易见的下一步。但是,在容器化应用并且部署之前,需要首先确保你的应用...

36270
来自专栏EAWorld

容器时代的DevOps部署

本文目录: 一、企业应用的部署发展 二、普元容器云与DevOps的部署设计 三、面向微服务的部署设计 四、容器组装化部署 五、容器云集成之路 六、结语 一、企业...

68170
来自专栏smartguys

(三):C++分布式实时应用框架——系统管理模块

版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!

26720
来自专栏Rainbond开源「容器云平台」

用户评测 | Docker管理面板系列——云帮(RainBond/CloudHelp 出色的k8s管理面板)

和之前介绍的Crane不同,来自好雨云(GoodRain)的云帮(CloudHelp目前已改名RainBond)是基于K8S的,说实话,感觉比Crane的开源态...

62370
来自专栏EAWorld

普元容器云关键设计和实践之路

目前,DevOps,微服务与容器云,可以说是炙手可热的三大话题,甚至可以说它们是云时代企业新一代IT架构的三大基石也不为过。微服务主要解决的是开发期的设计问题,...

20140
来自专栏SDNLAB

OPNFV XCI:跨社区集成实现开放创新

Linux基金会下的OPNFV项目是通过集成,部署和测试促进各种开源生态系统网络功能虚拟化(NFV)组件的开发和演进的开源项目,该项目目前宣布了其跨社区持续集成...

28760
来自专栏ytkah

小程序支持连Wi-Fi,代码包到4M

小程序又开发新能力了:1 更多硬件连接功能等着你。在商场等场所,用户以往要用微信连Wi-Fi,要扫二维码并关注公众号,点击菜单里的“连Wi-Fi”才能使用上网络...

46370
来自专栏Jerry的SAP技术分享

如何在腾讯云上安装Cloud Foundry

Cloud Foundry是VMware推出的业界第一个开源PaaS云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用...

27850
来自专栏沃趣科技

数据库容器化|未来已来

导语:“你不是不够好,你只是过时了”这句话用到 IT 行业特别合适,每隔一段时间都会有新的技术出现, 让码农们应接不暇。借着回顾DBA工作中的几个时期,跟大家分...

57560
来自专栏跟我一起学Docker

第四章 Docker框架

容器有效的将单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容...

17160

扫码关注云+社区

领取腾讯云代金券