balenaEngine: Moby-based container engine for IoT
balenaEngine is a new container engine purpose-built for embedded and IoT use cases and compatible with Docker containers. Based on Docker’s Moby Project, balenaEngine supports container deltas for 10-70x more efficient bandwidth usage, has 3x smaller binaries, uses RAM and storage more conservatively, and focuses on atomicity and durability of container pulling.
- Small footprint
- 3.5x smaller than Docker CE, packaged as a single binary
- Multi-arch support
- Available for a wide variety of chipset architectures, supporting everything from tiny IoT devices to large industrial gateways
- True container deltas
- Bandwidth-efficient updates with binary diffs, 10-70x smaller than pulling layers
- Minimal wear-and-tear
- Extract layers as they arrive to prevent excessive writing to disk, protecting your storage from eventual corruption
- Failure-resistant pulls
- Atomic and durable image pulls defend against partial container pulls in the event of power failure
- Conservative memory use
- Prevents page cache thrashing during image pull, so your application runs undisturbed in low-memory situations
Transitioning from Docker CE
We left out Docker features that we saw as most needed in cloud deployments and therefore not warranting inclusion in a lightweight IoT-focused container engine. Specifically, we’ve excluded:
- Docker Swarm
- Cloud logging drivers
- Plugin support
- Overlay networking drivers
- Non-boltdb discovery backends (consul, zookeeper, etcd, etc.)
Unless you depend on one of the features in Docker that balenaEngine omits, using balenaEngine should be a drop-in replacement.
balenaEngine is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.