这篇文章将试图回答在物联网或嵌入式Linux设备中使用Docker容器的难题。我们将探讨可以帮助我们做出正确决定的主要问题和要点。
阅读时间:
6
分钟
这些天,7年前,码头工人-最著名的容器技术背后的公司,发布了Docker的第一个版本,并永远改变了DevOps和云基础设施的世界。虚拟机(Vmware, Virtualbox等)和服务经理(Systemd是第一批感受到运动的受害者。Docker引擎提供的便利,将容器技术带到每一个新的云软件开发和架构的前沿。
在某种程度上,在我们看到容器在云市场上占有一席之地的几年后,Docker变得可用并得到基于ARM的CPU架构的支持,并打开了开发人员设计运行容器的物联网产品的思路。但与云市场不同的是,容器仍然没有征服物联网领域,并且被证明不那么有吸引力。
肯定是的.但并非所有人都适用。
让我们把这个决定分解为选择Docker容器可能影响的前3个主要因素:
物联网设备可以为不同的用例、行业和目的而设计和开发,从微型相机到大型机器和机器人。每个产品BOM(物料清单)对所选择的物联网硬件有直接影响。单板计算机(SBC)和系统模块(SOM)的价格可以低到5美元-树莓派零高如100美元甚至500美元-Nvidia Jetson家族.在低资源硬件上2022世界杯阿根廷预选赛赛程——小于1GB的RAM和磁盘空间,Docker引擎可能会变得笨重和不稳定。因此,在资源较少的小型设备上,原生选择将是放弃运行Docker引擎,而坚2022世界杯阿根廷预选赛赛程持使用标准的Linux服务管理器——systemd或Init。D用于覆盖和运行设备软件。
选择Docker作为设备软件的基础设施的最大优点之一是能够用健壮的原子方法替换整个设备文件系统应用程序:软件代码和包。当产品群在远离人类的现场时,容器和更简单的路径(如系统化服务)之间的两难是至关重要的,未来的影响很难改变。这是一个如此重要的主题的主要原因是因为需要不时地部署软件更新,以保持设备舰队的稳定和最新。
对于应用程序很小hth华体会最新官方网站、软件包很少的物联网产品,OTA更新过程可以也应该是轻量级和简单的:用新的更新版本替换当前的应用目录或文件,然后重新运行应用服务。与复杂的边缘软件相反,更新部署可能每周或每月包括许多不同的目录、文件和包,特别是在人工智能和图像处理应用程序中。
本机选择与需要在生产环境中完成的预期应用程序更新复杂性相关联。也就是说,选择容器可以显著减少可能出现的边缘情况和我们可能遇到的问题。
部署由数千或数万台设备组成的舰队需要考虑
“天”。在投入生产的一个月或一年后,设备群将表现如何?如果设备经常连接到互联网,有什么指导方针来保证它的安全,即使几年后?
不同物联网设备之间的攻击面可能会发生巨大变化,这都与我们的设备所面临的风险有关。使用最小的软件包运行Linux操作系统可以消除不必要的威胁,甚至随着时间的推移,需要更新的软件包更少,使我们处于控制之下。考虑到这一点,在为运行该应用程序而构建的容器上运行应用程序,并且没有其他未使用的包,可以省去很多麻烦。然而,操作系统本身运行数十个服务,使设备暴露于攻击之下,必须在生产阶段之前进行配置或禁用。
-------------
虽然确定一个赢家仍然不容易,但很明显,如果没有粗略的BOM环境,基于容器的应用程序将成为首选解决方案。然而,容器和基于服务的产品应用都存在于许多工业应用中,而且可能还需要几年的时间才能被发现。
两者之间的选择可以随着时间的推移改善我们的部署过程和整个项目的成功,但是,这两种选择仍然不能确保100%的应用程序正常运行时间。不幸的是,软件并不是刀枪不入的,有时,如果服务或容器应用程序在一个生产设备上崩溃并且不能启动,我们需要一个备份计划来尽可能快地保存这种情况。
在这种情况下,没有任何技术比拥有一个良好的监控系统更有帮助,它会在任何设备或应用程序问题的情况下通知我们。拥有一个良好的监控系统可以节省数小时的调试时间,并帮助我们在别人注意到之前解决问题。
如果是Docker容器或systemd服务,则为at2022世界杯南美区预选赛 ,我们提供一个一体化的平台来管理、更新、监控和保护物联网设备。用于部署基于容器的应用程序和基于文件系统的应用程序的公司,构建和生产连接的摩托车、相机、机器人和许多其他将技术推向边缘的伟大产品。hth华体会最新官方网站
JFrog Connect提供了两种方法来部署和管理物联网设备上的软件更新。这些工具旨在解决在产品群上成功部署OTA更新的复杂性,同时在每个部署的设备上实时提供正确的指标和信息。
容器更新工具负责从容器注册表中部署最新的Docker镜像,并根据给定的配方创建一个Docker容器,同时替换当前运行的容器。同样重要的是,容器更新工具包括一个回滚选项,在部署过程中出现任何问题时都会触发该选项。
Micro updates工具解决了部署和更新基于文件系统/ systemd的应用程序的复杂性。使用Micro更新,可以单独更新每个文件,并且可以在部署期间运行任何Bash命令或Bash脚本。与Container更新工具类似,回滚选项将确保将每个更新的文件返回到部署前的版本。