What is Docker? https://en.wikipedia.org/wiki/Docker_(software)

Docker is used here extensively for deployment of more or less everything loaded on the cluster.

Development is carried out either on a) physical target hardware or b) virtualized machines (Virtualized as in hardware virtualized). In the case of hardware virtualized machines, docker is loaded in and then builds take place.

Hardware virtualization is done with either a) Oracle VirtualBox or b) QEMU.

Machines are all connected to a common repository holding everything needed to build.

Top level view of supported container build directories:

drwxr-xr-x 2 root root 0 Apr 12  2018 f25arm
drwxr-xr-x 2 root root 0 Nov 29 22:10 f25x86
drwxr-xr-x 2 root root 0 Sep 13  2017 f26x86
drwxr-xr-x 2 root root 0 Apr 15  2018 f27arm32
drwxr-xr-x 2 root root 0 Apr 12  2018 f27arm64
drwxr-xr-x 2 root root 0 Jun 13  2018 f27x86
drwxr-xr-x 2 root root 0 Dec 19 15:01 f29arm32
drwxr-xr-x 2 root root 0 Jan 16 08:02 f29arm64
drwxr-xr-x 2 root root 0 Nov 26 08:47 f29x86
drwxr-xr-x 2 root root 0 Apr  6  2017 include
drwxr-xr-x 2 root root 0 Jul 29  2017 MacOS
drwxr-xr-x 2 root root 0 Jan 13  2018 monero
drwxr-xr-x 2 root root 0 Oct  1 12:36 oel74
drwxr-xr-x 2 root root 0 Mar  7  2017 registry

 

Installing docker-ce on Fedora 31 arm64: https://linuxconfig.org/how-to-install-docker-on-fedora-31

In general docker containers created here tend to be machine images, meaning they contain a complete copy of the operating system. Therefore (in theory) they should run on any flavour of docker on any host (provided the CPU is compatible - and even then tricks can be used to make them go).

The build process "inherits" its base layers in a heirachical structure so that running a suite of containers generally uses common base layers, minimizing storage requirements.

Here is a tree listing to three levels deep:

.
├── f25arm
│   ├── build
│   │   └── context
│   ├── build-all
│   ├── run
│   ├── z-child-f25arm-compile
│   │   ├── build
│   │   ├── data
│   │   ├── run
│   │   └── z-child-f25arm-golang
│   └── z-child-f25arm-systemd
│       ├── build
│       ├── run
│       ├── z-child-f25arm-davserver
│       ├── z-child-f25arm-elasticsearch
│       ├── z-child-f25arm-httpd
│       ├── z-child-f25arm-mysql
│       ├── z-child-f25arm-openvpn
│       ├── z-child-f25arm-samba
│       ├── z-child-f25arm-samba-build
│       └── z-child-f25arm-squid
├── f25x86
│   ├── build
│   │   └── context
│   ├── run
│   ├── z-child-f25x86-java
│   │   ├── build
│   │   ├── data
│   │   ├── run
│   │   ├── z-child-f25x86-eclipse
│   │   ├── z-child-f25x86-sqldeveloper
│   │   └── z-child-f25x86-tortoisehg
│   ├── z-child-f25x86-libpst
│   │   ├── build
│   │   ├── data
│   │   └── run
│   └── z-child-f25x86-systemd
│       ├── build
│       ├── data
│       ├── run
│       ├── z-child-f25x86-lxde
│       └── z-child-f25x86-sysd-java
├── f26x86
│   ├── build
│   │   └── context
│   ├── z-child-f26x86-kodi
│   │   ├── build
│   │   ├── data
│   │   └── run
│   ├── z-child-f26x86-lxde
│   │   ├── build
│   │   ├── data
│   │   └── run
│   └── z-child-f26x86-systemd
│       ├── build
│       ├── data
│       └── run
├── f27arm32
│   ├── build
│   │   └── context
│   ├── run
│   ├── z-child-f27arm32-compile
│   │   ├── build
│   │   ├── data
│   │   ├── run
│   │   └── z-child-f27arm32-golang
│   └── z-child-f27arm32-httpd
│       ├── build
│       ├── run
│       ├── z-child-f27arm32-backuppc
│       ├── z-child-f27arm32-emailserver
│       └── z-child-f27arm32-php
├── f27arm64
│   ├── build
│   │   └── context
│   ├── z-child-f27arm64-bitmonero
│   │   ├── build
│   │   ├── data
│   │   └── run
│   └── z-child-f27arm64-compile
│       ├── build
│       ├── data
│       ├── run
│       └── z-child-f27arm64-golang
├── f27x86
│   ├── build
│   │   └── context
│   ├── z-child-f27x86-eaglepcb
│   │   ├── build
│   │   ├── data
│   │   └── run
│   ├── z-child-f27x86-java
│   │   ├── build
│   │   ├── data
│   │   ├── run
│   │   └── z-child-f27x86-arduino-ide
│   ├── z-child-f27x86-minergate
│   │   ├── build
│   │   ├── data
│   │   └── run
│   └── z-child-f27x86-systemd
│       ├── build
│       ├── data
│       ├── run
│       ├── z-child-f27x86-chrome-headless
│       ├── z-child-f27x86-httpd
│       ├── z-child-f27x86-java
│       └── z-child-f27x86-vsftpd
├── f29arm32
│   ├── build
│   │   └── context
│   └── z-child-f29arm32
│       ├── build
│       ├── z-child-f29arm32-httpd
│       ├── z-child-f29arm32-openldap
│       ├── z-child-f29arm32-openvpn-client
│       └── z-child-f29arm32-openvpn-server
├── f29arm64
│   ├── build
│   │   └── context
│   └── z-child-f29arm64
│       ├── build
│       ├── z-child-f29arm32-openldap
│       ├── z-child-f29arm64-httpd
│       ├── z-child-f29arm64-openvpn-client
│       └── z-child-f29arm64-openvpn-server
├── f29x86
│   ├── build
│   │   └── context
│   └── z-child-f29x86-qemu
│       ├── build
│       ├── data
│       └── run
├── include
├── MacOS
│   └── glxgears
│       ├── build
│       ├── data
│       └── run
├── monero
├── oel74
│   ├── z-child-odb-12201
│   │   └── build
│   └── z-child-oel74-java-1.8
│       ├── build
│       ├── data
│       ├── run
│       ├── z-child-tomcat
│       └── z-child-wcc
└── registry

150 directories

and for the Fedora 25 ARM(32) branch showing only the build parents which result in a docker image:

├── z-child-f25arm-compile
│   └── z-child-f25arm-golang
└── z-child-f25arm-systemd
    ├── z-child-f25arm-davserver
    ├── z-child-f25arm-elasticsearch
    ├── z-child-f25arm-httpd
    │   ├── z-child-f25arm-backuppc
    │   ├── z-child-f25arm-emailserver
    │   └── z-child-f25arm-php
    │       ├── z-child-f25arm-forms
    │       └── z-child-f25arm-php-mysql
    │           └── z-child-f25arm-websitebaker
    ├── z-child-f25arm-mysql
    ├── z-child-f25arm-openvpn
    ├── z-child-f25arm-samba
    │   └── z-child-f25arm-samba-mysite
    ├── z-child-f25arm-samba-build
    │   └── z-child-samba-ad
    └── z-child-f25arm-squid

 

The base container

The starting point for all containers in this tree style architecture is the base operating system container. It has all the basic infrastructure for a particular distribution of linux. It used to be that a minimal distribution had to be downloaded followed by the extraction of files minus the operating system drivers etc. Nowdays pretty much all distributions provide a base minimal docker container which can be used to build upon.

Step one is to locate the base container and "pull" it down:

Here is a link to the official fedora docker repo:
https://hub.docker.com/_/fedora/

docker pull arm32v7/fedora

or you can specify a particular version:

docker pull arm32v7/fedora:29