This repository hosts two Dockerfile
s 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-ci
or
docker pull pologrp/polo-ci:openblas
docker run --tty --interactive --rm pologrp/polo-ci:openblas
to 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