A Moby-based container engine for IoT

An engine purpose-built for embedded and IoT use cases, compatible with Docker containers.
curl -sfL https://balena.io/engine/install.sh | sh
FEATURES

An engine compatible with docker containers

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 in common scenarios
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
SOLUTION
Why balenaEngine?
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 3.5x smaller binaries, uses RAM and storage more conservatively, and focuses on atomicity and durability of container pulling.
Since 2013, when we first ported Docker to ARMv6 and the Raspberry Pi, the balena team has been working in and around the Docker codebase. Meanwhile, having seen IoT devices used in production for tens of millions of hours, we’ve become intimately acquainted with the unique needs of the embedded world. So we built a container engine that runs Docker containers just as well, shares the Docker components that are needed for our use case, and is augmented with the IoT-specific features that we’ve built out over time.
DOWNLOAD

Get your assets

ASSET
OS
ARCH
 
balena-engine-v17.12.0-aarch64.tar.gz
Linux
aarch64
balena-engine-v17.12.0-armv5.tar.gz
Linux
armv5
balena-engine-v17.12.0-armv6.tar.gz
Linux
armv6
balena-engine-v17.12.0-armv7.tar.gz
Linux
armv7
balena-engine-v17.12.0-i386.tar.gz
Linux
i386
balena-engine-v17.12.0-x86_64.tar.gz
Linux
x86_64
BALENA ENGINE
Frequently asked questions

What is the Moby Project?
+
As described by Docker, the Moby Project is “an open framework to assemble specialized container systems.” You can read more at The moby project website and moby project introduction post

Why containers for IoT?
+
We think that containers are essential to bringing modern development and deployment capabilities to connected devices. Linux containers, particularly Docker, offer, for the first time, a practical path to using virtualization on embedded devices, without heavy overhead or hardware abstraction layers that get in the way.

Why not just use Docker’s container engine on my device?
+
Docker was primarily designed for datacenters with large, homogenous, well-networked servers. As such it makes tradeoffs that in some cases come in conflict with the need of small, heterogenous, remotely distributed, and differentiated devices, as found in IoT and embedded Linux use cases.

With its small footprint and purpose-built features, balenaEngine was made specifically for IoT devices, or any scenario where footprint, bandwidth, power, storage, etc. are a concern.

What specific Docker features are excluded from balenaEngine?
+
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 backed stores (consul, zookeeper, etcd, etc.)

Balena
An open source project byBalena
Terms of Service|Privacy Statement|Master Agreement|
Copyright 2018 Balena
|
All Rights Reserved