You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Eric Ball Cristina Pauna

Why DockerHub is recommended for Multi-Arch


DockerHub is the mainstream popular docker registry which can support Manifest List, therefore can support Multi-Arch.

Successful Story

Dockerhub is now integrated in Akraino. The validation project is already pushing to Dockerhub, so if you would like to check out some template code, please take a look at ci-management/jjb/validation.

The docker images are in the official repo now [1] and the docker build jobs passing [2].

[1] https://hub.docker.com/r/akraino/validation/

[2] https://jenkins.akraino.org/view/validation/job/validation-master-docker/

Other open source projects can refer this successful experience to integrate your DockerHub.

How to Connect Jenkins to DockerHub

The Jenkins slaves are connected to Dockerhub through the LF scripts and no extra steps are needed from users.

How to setup Jenkins

Docker needs to be installed on the Jenkins slave building the containers.

If you want to connect the slave to the LF master you'll need to install openjdk and monit and to follow the instructions provided by LF.


Docker file and image naming specifics to support Multi-Arch (Instruction Set Architecture)

Images that support multi-arch are handled with manifest list (a.k.a. fat manifest) mechanism. For more details on how this works in Akraino please check this article: https://www.lfedge.org/2019/07/09/using-dockerhub-in-akraino-edge-stack-other-linux-foundation-projects/


Building multi-arch images on your project

In order to have a multi-arch pipeline in your project you need to:

  1. Determine the hardware where you run your containers (for each architecture). You might want to setup your own or you can contact the lab owners from the Akraino community to share their resources. Right now Akraino supports x86 and aarch64 architectures
  2. If you are using the current Akraino resources, you can skip this step. If you are using your own hardware resources, you need to setup your Jenkins slave. If you also want to connect the slave to LF master, contact LF at https://jira.linuxfoundation.org/servicedesk/customer/portal on how to make the connection.
  3. Replicate the Jenkins jobs that are used for building multi-arch images. You can use the code here as a reference, which creates a multi-job that builds and pushes the images in parallel for each architecture, then create and push the fat manifest for those images. The code from the example is ran in LF CI infrastructure here, and the images are being pushed in this docker repository.


  • No labels