容器化
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。
网友评论