WalT image registries

Overview

Image registries allow to share WalT images, a major feature for reproducibility and/or team working.

The following is a list of image registries walt can use.

WalT internal repository

The WalT server internally manages the images by using podman, buildah and skopeo tools.

When using walt image search, WalT will list images of this internal repository, with a clone URL starting with walt:. However, it will only list images belonging to other users, since images belonging to the calling user are those printed when typing walt image show. It is therefore obvious to import images built by teammates into one’s own working set by using walt image clone <url>.

Docker Hub

In their default configuration, WalT servers are configured to publish and clone images to/from the docker hub at hub.docker.com.

The WalT development team publishes default images for various kinds of WalT nodes there, including:

  • waltplatform/rpi-*-default:latest: default images for various Raspberry Pi models

  • waltplatform/pc-x86-64-default:latest: default image for 64-bit PCs

  • waltplatform/pc-x86-32-default:latest: default image for 32-bit PCs

When using walt image search, WalT will list these remote images with a clone URL starting with hub:, and this clone URL can be used to download them using walt image clone <url>.

The command walt image publish can be used to publish images on the Docker Hub. Referencing the resulting clone URL in a research paper can help reproducibility.

Since the Docker Hub is a public registry, its use may not match all needs (e.g., a private company may not want to publish images involving industrial secrets). It is possible to reconfigure WalT to use a local registry instead of the Docker Hub, or to use both the Docker Hub and a local registry, as described next.

Private registries (Docker registry v2 or JFrog Artifactory)

As an alternative to the Docker Hub, one can use a private docker image registry to share WALT OS images.

WALT is able to communicate with two kinds of private registries:

Installing a server holding those private registries is out of scope of this documentation, but you can checkout the links above for more information.

One can then reconfigure WalT to interact with such a private registry by using:

root@walt-server:~$ walt-server-setup --edit-conf

A network configuration editor appears first, and the configuration editor for registries next. Using this configuration editor to declare the new registry server should be obvious.

When configuring a local registry, a label should be given on the editor interface. This label is then used in the clone URL of walt image search, walt image clone, and possibly for the --registry option of walt image publish. For instance, if the label “local” is chosen, then clone URLs of images stored in the local registry will be prefixed with local:, and one can use walt image publish --registry local <image-name> to upload an image into this local registry.

The Jfrog Artifactory platform is special because a given platform can manage several image registries (or “Repository” in JFrog terminology). So obviously one has to indicate the target “Repository” name when configuring such a registry on WALT.

Using this configuration editor, one might also disable the Docker Hub, but it is not recommended, because of the default images stored there. The first time a new kind of node is detected, WalT has to download a default image for it. This image can usually be found on the Docker Hub, but WalT will also try the local registry if any. If all fails, then the WalT server will not be able to manage this new node. As a consequence, disabling the Docker Hub should only be done after all needed default images are downloaded (at least one node of each kind could boot at least once), and keeping in mind that the WalT server will not be able to manage new kinds of nodes in the future, unless a default image is made available for them in the local registry.

Docker daemon on walt server

Many WalT users create their images in an incremental way, by using various walt image shell or walt image cp steps.

However, for better reproducibility and self-documentation, it is also possible to generate a WalT image from a Dockerfile. For instance:

FROM waltplatform/pc-x86-64-default:latest
RUN apt install -y ...
[...]

And then create the image with walt image build. See walt help show image-build.

Since the WalT server is also equipped with the docker command, users can also use a plain docker build there to create an image. Non-root users must be added to the docker group beforehand. In this case the resulting image will be owned by the docker daemon, not directly by WalT. When using walt image search, WalT will indicate a clone URL starting with docker:, and then using walt image clone <url> it is easy to import it into WalT internal repository.