SingularityContainerCreation
Prerequisites
By default, ordinary users don't have the right to create Singularity containers. You must either do it as root, or to work with sudoer account (the best option !).
Creation of a containers
On this page, we will not explain all the methods that exist to build a container, this is already done here. Instead, we will illustrate one method that can rapidly be adopted.
Creation of a container using a definition file
A definition file is a recipe to build a container starting from something else, generally another Singularity or Docker container. Let's create a definition file 'test1.def' with the following content :
Bootstrap: docker From: centos:latest
The first line indicates that we will use a container from Docker hub, the second line specifies which container (the latest release of CentOS).
Now, if you issue the following command :
$ sudo singularity build --sandbox test1.img test1.def
after one or two minutes, you get an container ready to be used under the form of a directory test1.img.
Now, let's say you want to install vim inside the container. Issue the following command to open a shell as root inside the container :
$ sudo singularity shell --writable test1.img Singularity: Invoking an interactive shell within container... Singularity test1.img:~>
The "--writable" flag is really important if you want to bring modifications inside the image. Now, you can do "yum install -y vim" and log out.
If you want to transform the sandbox into a single image file, run the following command :
blabla
Sources
- Singularity website -> explanations to build a container on this page.