Docker to Singularity
Running Docker images in Singularity
Singularity can shell, import, run and exec a Docker image directly.
Docker is not required for running Docker images in Singularity.
singularity shell docker://ubuntu:latest
singularity run docker://ubuntu:latest
singularity exec docker://ubuntu:latest echo "Hello Cambridge!"
Converting a Docker image to a Singularity image
To import a docker image to a singularity image:
singularity create --size 4000 tensorflow.img
singularity import tensorflow.img docker://tensorflow/tensorflow:latest
The singularity create
command by default will create an image of size 768MB, you can modify this by using --size
or -s
argument.
Converting a Docker specification file to a Singularity specification file
Just like Docker has the Dockerfile, Singularity has a file called Singularity. It is recommended to build Singularity images from the specification file.
Singularity-Hub converts Docker specification file to a Singularity file.
Singularity does not currently support metadata, and so tags like
MAINTAINER
andLABEL
are converted to comments.
Sample Docker file
FROM fedora:latest
MAINTAINER Krishna Kumar <[email protected]>
# Update to latest packages, remove vim-minimal & Install Git, GCC, Clang, Autotools and VIM
RUN dnf update -y && \
dnf remove -y vim-minimal python sqlite && \
dnf install -y clang cmake cppcheck eigen3-devel findutils gcc gcc-c++ git make perl-Digest-MD5 ruby tar valgrind vim wget && \
dnf clean all
# Coverage
RUN wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.11.orig.tar.gz && tar xf lcov_1.11.orig.tar.gz && make -C lcov-1.11/ install
# Create a user cbgeo
RUN useradd cbgeo
USER cbgeo
# Create a research directory and clone git repo of felib code
RUN mkdir -p /home/cbgeo/research && \
cd /home/cbgeo/research && \
git clone https://github.com/cb-geo/felib.git
# Done
WORKDIR /home/cbgeo/research/felib
Converted Singularity specification file
bootstrap:docker
From:fedora:latest
%post
# Krishna Kumar <[email protected]>
dnf update -y && \
dnf remove -y vim-minimal python sqlite && \
dnf install -y clang cmake cppcheck eigen3-devel\
findutils gcc gcc-c++ git make perl-Digest-MD5 ruby tar valgrind vim wget && \
dnf clean all
wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.11.orig.tar.gz && tar xf lcov_1.11.orig.tar.gz && make -C lcov-1.11/ install
useradd cbgeo
USER cbgeo
mkdir -p /home/cbgeo/research && \
cd /home/cbgeo/research && \
git clone https://github.com/cb-geo/felib.git