Building a WalT image from a Dockerfile

In order to modify an image easily, one can use walt image shell or walt image cp. However, listing build steps in a Dockerfile makes an image build reproducible, a valuable feature for image maintenance. Command walt image build allows to build images this way.

Using walt image build

This command has two modes of operation:

  • option --from-url allows to specify the URL of a git repository (e.g., on github)

  • option --from-dir allows to specify a local directory on the client.

In both cases, a Dockerfile must be present at the root of the specified repository or directory. The other files contained in the repository or directory may be used in ADD and COPY instructions.

As a last command argument, one has to specify the name of the resulting image. If this name is already in use, the previous image will be overwritten (after a confirmation prompt).

Build tips

Most users use the default images as a starting point, in order to inherit provided features and image compliance with the walt system. Default images are named waltplatform/<node-model>-default:latest. For instance, the default image for rpi-b-plus nodes is waltplatform/rpi-b-plus-default:latest.

Here is a sample Dockerfile adding tshark to this default image:

FROM waltplatform/rpi-b-plus-default:latest
RUN apt update && apt install -y tshark

In some very specific cases, one may also create the image completely from scratch. However, in this case, the user must ensure the resulting image complies with walt image requirements. For details, see walt help show image-from-scratch.

Alternative methods

Users may also build walt images by just using docker tooling, and then importing them into walt internal registry.

Using the docker hub

The image can be built on any build machine equipped with docker:

$ docker build -t <user>/<image-name> .     # build
$ docker push <user>/<image-name>           # publish on the docker hub

And then it can be retrieved by using the walt client:

$ walt advanced rescan-hub-account          # let walt know about the new remote image
$ walt image search <image-name>            # verify walt can find it
$ walt image clone hub:<user>/<image-name>  # import into walt

Working on the walt server

When working on the walt server, which is equipped with docker tooling, the workflow is even simpler:

$ docker build -t <user>/<image-name> .         # build the image
$ walt image search <image-name>                # walt should detect it on the docker daemon
$ walt image clone docker:<user>/<image-name>   # import into walt