我最近遇到了一个项目,该项目涉及编排多个(支持 Linux 的)嵌入式设备,向它们部署软件,并允许在 git repo 中的代码库更新时更新应用程序。
最初的想法是为每个设备制作一个标准镜像,我开始尝试在 UDOO Quad 和 Intel Edison 上安装 docker,但到目前为止没有任何成功。
我的想法是,在嵌入式设备上安装 Docker 似乎是个好主意——但如果是这样的话,现在肯定已经移植了。似乎正在做出这些努力的唯一团体是 Resin.io。
是我遗漏了什么,还是有明确的原因说明 Docker 在嵌入式设备上没有意义?如果没有原因,并且 确实 在嵌入式系统上运行 Docker 是有意义的,那么我是否忽略了一些东西:是否有任何关于移植的讨论来源或操作方法覆盖这个?
最佳答案
我曾考虑在嵌入式设备(mips 系统)上运行 docker,但没有这样做。在我看来,它存在一些问题:
Docker 是用 Golang 实现的。目前没有可用于 mips 编译 go 的工具链。您需要使用 gcc-go 自己创建工具链。
docker的大小大于lxc。在台式计算机中这不是问题,但嵌入式设备的闪存存储空间有限。
Docker 使用了一些最新的 linux 内核特性。有时嵌入式设备上的内核版本不是那么新,需要向后移植才能使其工作。
docker 镜像必须建立在与运行时环境相同的架构上。这意味着如果您想在 Raspberry Pi 上运行 docker 容器,则 docker 镜像必须构建在 ARM 架构系统上。 QEMU 可用于在云端构建 docker 镜像,但它并不支持嵌入式系统中使用的所有 CPU 架构。 (例如,目前不支持 MIPS)
最后,lxc 被选择用于在嵌入式设备上运行容器的特定任务。与 docker 相比,它的功能有限,但目前它适合项目的需求。
截至 2019 年,我想更新这个答案,因为我使用 ARM cpu 将 docker 移植到嵌入式系统。随着闪存使用量和内存使用量的降低,通过使用 docker,您将拥有容器管理、图像管理以及许多准备好从 docker hub 运行图像。所以决定是成本和功能之间的平衡。
关于嵌入式系统上的 Docker,为什么不呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010832/