嵌入式系统上的Docker,为什么不呢?

Bob*_*bby 11 containers embedded-linux docker intel-edison

最近有一个项目引发了我的方式,包括编写几个(支持Linux的)嵌入式设备,为它们部署软件,以及允许在git repo中更新代码库时更新应用程序.

最初的想法是为每个设备制作一个标准图像,然后我开始尝试在UDOO Quad和Intel Edison上安装docker,但是到目前为止还没有任何成功.

我的想法是,在嵌入式设备上安装Docker似乎是一个好主意 - 但如果是这样的话,那么它肯定会被移植到现在.Resin.io是唯一一个似乎在做这些努力的团体.

有没有我缺少的东西,或者有没有明确的理由说明Docker在嵌入式设备上没有意义?如果没有理由,并且在嵌入式系统上运行Docker 确实有意义,那么我是否忽略了一些问题:是否有任何关于移植的讨论来源,或者如何解决这个问题?

Jin*_*Qiu 9

我曾考虑在嵌入式设备上运行docker(一个mips系统),但并没有这样做.在我看来,它存在一些问题:

  1. Docker在Golang中实现.目前还没有可供mips编译的工具链.您需要使用gcc-go自己创建工具链.

  2. docker的大小大于lxc.在台式计算机中,这不是问题,但嵌入式设备的闪存存储有限.

  3. Docker使用了linux内核的一些非常新的功能.有时嵌入式设备上的内核版本不是那么新,需要后端才能使其工作.

  4. docker镜像必须与运行时环境构建在相同的体系结构上.这意味着如果要在Raspberry Pi上运行docker容器,则必须在ARM体系结构系统上构建docker镜像.QEMU可用于在云中构建docker镜像,但它不支持嵌入式系统中使用的所有CPU架构.(例如,它目前不支持MIPS)

最后,选择lxc用于在嵌入式设备上运行容器的特定任务.与docker相比,它具有有限的功能,但目前它符合项目的要求.


Nic*_*tje 5

以下是 2018 年的更新:

由于 Raspbian 和 Armbian 操作系统映像开发的进步,您现在可以非常轻松地在 Raspberry Pi 和 Orange Pi 等嵌入式设备上使用 Docker。具体来说,这两种类型的设备及其各自的操作系统映像现在都支持足够高版本的内核,可以毫无问题地安装 Docker(至少是 3.10 版,尽管现在两者都提供 4.x+ 版本)。

使用嵌入式 Docker 绝对可以实现您对更快变化率的渴望。我可以根据经验说,我已经测试并定期运行您描述的方法。基本上,您从基本操作系统映像(例如 Raspbian 或 Armbian)开始,充分调整该操作系统以使其安全并安装 Docker,然后使用 Docker 处理开发迭代和应用程序更新。

顺便说一句,如果您有兴趣在嵌入式 Linux 设备上运行 Docker,那么我建议您查看我编写的免费、开源、MIT 许可的命令行工具,以帮助开发人员同时在多个设备上使用嵌入式 Docker:https://github.com/ForwardLoopLLC/floopcli

即使您对该工具本身不感兴趣,该工具的文档也描述了使用多种语言在多个设备上使用 Dockerized 应用程序的几种模式:https ://docs.forward-loop.com/floopcli/master/index.html . 那里的材料应该作为将应用程序移植到 Docker 然后将它们部署到嵌入式设备上的起点。该文档还解决了一些嵌入式设备的微妙之处,例如 ARMv6 和 ARMv7 之间的差异。希望这可以帮助您入门!