Mender Client Docker for ARM

Hi. Our research project requires to run Mender Client on Docker using Raspberry Pi. Software in docker hub has only image for linux/amd64.

Where to find images for linux/ARM or at least Dockerfile so we could build the image?

Hi @G-IOT-M,

Thanks for reaching out! Unfortunately, there is neither client nor Dockerfile available, because it wouldn’t make practical sense - at least not in the current situation and feature set.

Let me explain:

  • the Mender Client needs to access the A and B (a.k.a. “active” and “inactive”) partitions directly.
  • depending on the bootloader integration in use, the Mender Client might even require to access block storage outside partitions directly, to read/write bootloader environment variables.
    Unless you add quite a bit of evil magic to container invocation, this is not possible as far as I know. And if you add that magic, you essentially break all isolation and the Mender Client can again access your full system. That is not by accident, its by design: how would you update a full system on the binary/block level if you can’t access the system… on the binary/block level?:man_shrugging:

What theoretically can be done is running the Mender Client along a somewhat customized Update Module in a container, which can in turn then access some storage areas that are exposed to the container as a volume mount. If your use case only mandates to update such resources, then this might be a viable route, but in most cases I know of the requirements actually demand more.

The image you might have found on the Docker Hub is not a Mender Client distribution to update the host which runs it. It is an on-boarding example container that people can use to evaluate the usage and processes of Mender. It does not modify or update any files outside the container, and is definitely neither meant nor suited for OTA in production.

Greetz,
Josef

Yes we know how Mender handles the update and that it is impossible to update the device itself using the Mender in Docker. But in our case that is not intended. We are trying to manage bluetooth device updates from Mender.

To deploy an update from Mender to this bluetooth device a gateway is needed to translate the Mender deployment to firmware update commands. So, all we need from the client is ability run a python script when update is deployed from Mender.

Please correct me, but I think Mender client in Docker can handle this.