This repository hosts two Dockerfiles and an accompanying build.sh script to
build multi-architecture Docker images. The images are intended to be used as
isolated environments that contain dependencies of POLO.
All images use the stretch-slim Debian image as the base and build
from source. Dockerfile.lapack and Dockerfile.openblas differ from each
other in the LAPACK implementation they install. Dockerfile.lapack installs
the reference LAPACK (v3.8.0) implementation, whereas
Dockerfile.openblas installs the OpenBLAS (v0.3.6) variant.
All images support amd64, arm32v6 and arm64v8 architectures.
As an end user, you do NOT need to build the images. On a system with Docker properly installed, you can simply run
docker pull pologrp/polo-ci
docker run --tty --interactive --rm pologrp/polo-cior
docker pull pologrp/polo-ci:openblas
docker run --tty --interactive --rm pologrp/polo-ci:openblasto pull and run the corresponding Docker image for your architecture that contains the reference LAPACK or OpenBLAS implementations, respectively.
The accompanying build.sh script uses qemu-user-static to build
Docker images for different architectures on an amd64 host. Then, it uses
Docker's experimental manifest functionality to build manifest lists. For this
reason, you need to have a Docker client that is installed with experimental
features enabled. To enable the experimental features, you need to have
the following in your $HOME/.docker/config.json file:
{
"experimental": "enabled"
}Finally, build.sh pushes the images and the manifest lists to
pologrp/polo-ci. Hence, you need to provide build.sh with a
Docker Hub username and password combination, which has write access to the
repository.
git clone https://github.com/pologrp/docker-ci /tmp/docker-ci
cd /tmp/docker-ci
DOCKER_USERNAME='username' DOCKER_PASSWORD='password' ./build.sh