Apptainer (Singularity)
Apptainer, previously known as Singularity, provides application containers for Linux that is also compatible with Docker.
Install with Conda
Requirements
- Conda (miniconda), see our Conda tutorial for more details.
- Conda channels: conda-forge, bioconda
Add the conda-forge channel
You will need the conda-forge channel to install Apptainer. If you have not set channels yet make sure to add it:
bash
conda config --add channels conda-forge
Install Apptainer (Singularity) in conda environment
Create environment and install Apptainer (Singularity):
bash
conda create -n apptainer -c conda-forge "apptainer"
Activate your apptainer environment and try running Apptainer:
bash
conda activate apptainer
apptainer --help
Common practices and commands
All information is collected from the official Apptainer documentation.
Pull Docker image
You can use the pull and build commands to download pre-built images from an external resource like the Container Library or Docker Hub.
bash
#-- Example
apptainer pull docker://godlovedc/lolcow
bash
#-- Example
apptainer build -B $TMPDIR lolcow.sif docker://godlovedc/lolcow
Run Docker image
For demonstration, let’s use an easy (though somewhat useless) example of lolcow.sif image from Docker:
bash
apptainer pull docker://godlovedc/lolcow
#-- The above command will save the alpine image from the Container Library as lolcow.sif
To start an instance, you should follow below pattern:
apptainer instance start -B $TMPDIR <image> <instance-name>
bash
apptainer instance start -B $TMPDIR lolcow.sif instance1
This command causes Apptainer to create an isolated environment for the container services to live inside.
Listing running containers
One can confirm that an instance is running by using the instance list
command like so:
bash
apptainer instance list
INSTANCE NAME PID IP IMAGE
instance1 3661427 /mnt/scratch/tmp/rootfs-728963423/root
Stop running container
When you are finished with your instance you can clean it up with the instance stop
command as follows:
bash
apptainer instance stop instance1
Where are the images stored ?
By default, Apptainer will create a set of folders in your $APPTAINER_CACHEDIR
directory for docker layers, Cloud library images, and metadata, respectively:
bash
$APPTAINER_CACHEDIR/cache/library
$APPTAINER_CACHEDIR/cache/oci
$APPTAINER_CACHEDIR/cache/oci-tmp
Temporary file storage
By default, Apptainer won't recognize lab tmp storage. You can apply lab tmp storage location /mnt/scratch/tmp
to a container using -B $TMPDIR
variable
bash
#-- Example
apptainer shell -B $TMPDIR docker://ubuntu