Docker在embedded式系统上,为什么不呢?

最近有一个项目抛出我的方式,涉及到几个(Linux能力)embedded式设备的编排,部署软件给他们,并允许应用程序更新时,代码库在git回购更新。

最初的想法是为每个设备制作一个标准的图像,然后我着手尝试在一个UDOO Quad和一个Intel Edison上安装docker,但是没有取得任何成功。

我的想法是,在embedded式设备上安装Docker似乎是一个好主意 – 但是如果是这样的话,那么肯定现在已经移植了Docker。 Resin.io是唯一一个似乎在做这些工作的团体。

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

我曾经考虑过在embedded式设备(mips系统)上运行docker,但并没有这样做。 有一些问题,我谦卑的看法:

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

  2. docker的大小比lxc大。 在台式电脑中,这不是问题,但embedded式设备的闪存存储有限。

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

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

最后,lxc被select用于在embedded式设备上运行容器的特定任务。 与docker相比,它的function有限,但是目前它符合项目的要求。

通常,embedded式系统的变化率非常低。 Docker在最低版本上工作良好,然后在顶层进行分层。 如果你想牺牲在最小的embedded式系统上运行docker的开销,docker能够拥有一个构build系统和稳定的变化率,那么你可以探索它。