嵌入式行业应推广部署Linux容器

2019-07-12 19:09发布

容器化

Docker一般来说都是DevOps的主要战场,主要在Cloud/BData/AI等领域,但是我个人觉得应该在嵌入式行业推广部署Linux容器,包括开发工具、边缘计算和OTA领域。这几点是未来硬件、软件快速迭代的基础。

容器化优势在嵌入式行业的优势

这些优势均与现有的DevOps相对应。
  • 标准化应用发布,容器包含了运行环境和可执行程序,可以跨平台和主机使用。例如Ubuntu 18.04LTS内置arm-none-ebai-gcc v6.x,可是大多数代码需要v4.8,那么除了卸载一途,可以直接用docker来拉取整个编译环境,包括gcc/gdb/programmer。在边缘计算中,也可以通过这种方式来交付;
  • 节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
  • 微服务架构,基于SOA架构或微服务架构的系统,通过服务编排,实现松耦合架构;
  • 节约成本,容器部署可以减少存储器使用量,减少到MB级;
  • 持续集成,通过与代码进行关联使持续集成非常方便,实际上这需要使用配置工具和测试工具来实现;
  • 集群系统轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

容器的典型嵌入式应用

  • 基于docker的编译环境,不仅利用Linux的RAMdisk,还可以利用distcc的分布式编译,还可以统一了团队内部的编译环境;
  • 基于docker的运行环境,在树莓派等Linux单板机中部署Node.js/Python/redis/MongoDB,持续集成非常容易;
  • 基于docker的部署和OTA交付。
大家可以检索以下Dockerfile:
  • docker android studio
  • docker arduino
  • docker gcc-arm-none-eabi
  • docker arm mbed
  • docker esp8266
  • docker nodejs
  • docker redis
  • docker mysql
  • ...

Linux vs Windows

虽然Windows 10开始将Docker作为一种原生功能,但是我还是极力推荐在Linux中部署Docker。这主要是因为基于内存的/tmp是Linux原生功能,而编译C++工程需要利用RAMdisk做加速。同样是Arduino/mbed,Linux下编译速度秒杀Windows。