If you recall from learning about Docker, Docker images are formed of a set of layers that make up the complete image. When you pull a Docker image from Docker Hub, you see the different layers being downloaded to your system. They are stored in your local Docker repository on your system and you can see details of the available images using the docker
command.
Singularity images are a little different. Singularity uses the Singularity Image Format (SIF) and images are provided as single SIF
files (with a .sif
filename extension). Singularity images can be pulled from Singularity Hub, a registry for container images. Singularity is also capable of running containers based on images pulled from Docker Hub and some other sources. We’ll look at accessing containers from Docker Hub later in the Singularity material.
Let’s begin by creating a test
directory, changing into it and pulling a test Hello World image from Singularity Hub:
$ mkdir $VSC_DATA/apptainer-course
$ cd $VSC_DATA/apptainer-course
$ singularity pull hello-world.sif shub://vsoch/hello-world
What just happened?! We pulled a SIF image from Singularity Hub using the singularity pull
command and directed it to store the image file using the name hello-world.sif
in the current directory. If you run the ls
command, you should see that the hello-world.sif
file is now present in the current directory. This is our image and we can now run a container based on this image.
To have some more examples of bioinformatics tools, we will download one singularity containers from the Galaxy Depot.
$ singularity pull --name fastqc-0.11.9--0.sif https://depot.galaxyproject.org/singularity/fastqc:0.11.9--0
$ file fastqc-0.11.9--0.cif
With the file
command, you can verify that the downloaded file is a singularity executable.