How to update a Docker container with Mender using Raspberry Pi

10th Dec 2019

A Docker container packages applications in containers by virtualizing the operating system and dividing it into compartments to run applications. Powerful CPU-based devices can leverage virtualization to enable containers. Containers are easy to manage due to their atomic nature, enable more efficient use of system resources, faster delivery cycle and provide a nice layer of isolation. Microsoft Azure IoT Edge has opted in for this approach making it easy for their ecosystem to both develop and consume different services (as containers).

Application updates entail any kind of update not being a system update, typically software running higher up in the stack such as the UI application, or cloud connectivity client. Mender uses a framework called Update Modules to enable application-based updates and comes with support for these types of updates out-of-the-box:

  • Packages (deb and rpm)
  • Containers (docker)
  • Files (directory copy/sync)

Figure below illustrates the container update use case with Mender.

The Mender client, a process that runs in user space on top of the operating system, uses Docker Update Modules. Installing the Docker Update Module will enable support for installing Docker containers. When the Mender client downloads a Docker container from the server, it will run the Docker Update Module executable associated with the type of software downloaded. The Update Module is responsible for carrying out the steps needed to install software of this type.

Learn more in this tutorial on how to use Docker Update Module to update a Docker container using a Raspberry Pi 3.