This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.


What neurocontainers are about

1 - Contribute Containers

How to contribute a new container.

To make contributing containers easier, we developed an interactive container build system. If you are very familiar with Git and building containers you can also follow the manual process, which you can find documented here:

1) Open an issue to get access to the interactive container build system

  • describe which container you would like to add
  • wait for a reply on your issue that your account has been setup

2) Access the container build system

  • authenticate with your github account
  • select a CPU session or a GPU session (if your container requires a GPU)
  • open a Neurodesktop session

3) Run the interactive build process

  • open a Terminal session
  • run:
cd ~
git clone
cd neurocontainers/interactive_builder/
  • Follow the instructions of the interactive build tool. After a couple of seconds where the base image gets updated you should see a “root@neurodesk-builder:~$>” shell. Now run the commands to get your tool to work.
  • Once the tool works, hit CTRL-D or type “exit”
  • Then answer more questions in the build tool

4) Submit the generated and file as attachements to your issue

  • once completed, download the and file and submit them as attachements to your github issue


Neurodesk Singularity Containers on CVMFS

Install CVMFS

First you need to install CVMFS. Follow the official instructions here:

one example for Ubuntu in Windows Subsystem for Linux (WSL) could look like this:

sudo apt-get install lsb-release
sudo dpkg -i cvmfs-release-latest_all.deb
rm -f cvmfs-release-latest_all.deb
sudo apt-get update
sudo apt-get build-essential
sudo apt-get install cvmfs

Configure CVMFS

Once installed create the keys and configure the servers used:

sudo mkdir -p /etc/cvmfs/keys/

echo "-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----" | sudo tee /etc/cvmfs/keys/

echo "CVMFS_USE_GEOAPI=yes" | sudo tee /etc/cvmfs/config.d/

echo 'CVMFS_SERVER_URL=";;;;;;;"' | sudo tee -a /etc/cvmfs/config.d/ 

echo 'CVMFS_KEYS_DIR="/etc/cvmfs/keys/"' | sudo tee -a /etc/cvmfs/config.d/

echo "CVMFS_HTTP_PROXY=DIRECT" | sudo tee  /etc/cvmfs/default.local
echo "CVMFS_QUOTA_LIMIT=5000" | sudo tee -a  /etc/cvmfs/default.local

sudo cvmfs_config setup

For WSL users

It is required to run this for each new new WSL session:

sudo cvmfs_config wsl2_start

Test if the connection works:

sudo cvmfs_config chksetup

ls /cvmfs/

sudo cvmfs_talk -i host probe
sudo cvmfs_talk -i host info

cvmfs_config stat -v

For Ubuntu 22.04 users

If configuring CVMFS returns the following error:

Error: failed to load cvmfs library, tried: './' '/usr/lib/' '/usr/lib64/' './' '/usr/lib/' '/usr/lib64/'
./ cannot open shared object file: No such file or directory
/usr/lib/ cannot open shared object file: No such file or directory
/usr/lib64/ cannot open shared object file: No such file or directory
./ cannot open shared object file: No such file or directory cannot open shared object file: No such file or directory
/usr/lib64/ cannot open shared object file: No such file or directory

Failed to read CernVM-FS configuration

A temporary workaround is:

dpkg -i libssl1.1_1.1.1f-1ubuntu2.15_amd64.deb

Install singularity/apptainer

e.g. for Ubuntu/Debian:

export VERSION=1.18.3 OS=linux ARCH=amd64 && \
    wget$VERSION.$OS-$ARCH.tar.gz && \
    sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz && \
    rm go$VERSION.$OS-$ARCH.tar.gz

echo 'export GOPATH=${HOME}/go' >> ~/.bashrc && \
    echo 'export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin' >> ~/.bashrc && \
    source ~/.bashrc

go get -d

export VERSION=v3.10.0 # or another tag or branch if you like && \
    cd $GOPATH/src/ && \
    git fetch && \
    git checkout $VERSION # omit this command to install the latest bleeding edge code from master

export VERSION=3.10.0 && # adjust this as necessary \
    mkdir -p $GOPATH/src/ && \
    cd $GOPATH/src/ && \
    wget${VERSION}/singularity-ce-${VERSION}.tar.gz && \
    tar -xzf singularity-ce-${VERSION}.tar.gz && \789
    cd ./singularity-ce-${VERSION} && \
    ./mconfig --without-seccomp --without-conmon

./mconfig --without-seccomp --without-conmon && \
    make -C ./builddir && \
    sudo make -C ./builddir install

export PATH="/usr/local/singularity/bin:${PATH}"

Use of Neurodesk CVMFS containers

The containers are now available in /cvmfs/ and can be started with:

singularity shell /cvmfs/

make sure that SINGULARITY_BINDPATH include the directories you want to work with:

export SINGULARITY_BINDPATH='/cvmfs,/mnt,/home'

For WSL users

The homedirectory might not be supported. Avoid mounting it with

singularity shell --no-home /cvmfs/

or configure permanently:

sudo vi /etc/singularity/singularity.conf


mount home = no

Install module system

sudo yum install lmod


sudo apt install lmod

Use of containers in the module system

Configuration for module system

Create a the new file /usr/share/ with the content:

# system-wide profile.modules                                          #
# Initialize modules for all sh-derivative shells                      #
trap "" 1 2 3

case "$0" in
    -bash|bash|*/bash) . /usr/share/lmod/6.6/init/bash ;;
       -ksh|ksh|*/ksh) . /usr/share/lmod/6.6/init/ksh ;;
       -zsh|zsh|*/zsh) . /usr/share/lmod/6.6/init/zsh ;;
          -sh|sh|*/sh) . /usr/share/lmod/6.6/init/sh ;;
                    *) . /usr/share/lmod/6.6/init/sh ;;  # default for scripts

trap - 1 2 3

Make the module system usable in the shell

Add the following lines to your ~/.bashrc file:

if [ -f '/usr/share/' ]; then source /usr/share/; fi

if [ -d /cvmfs/ ]; then
        # export MODULEPATH="/cvmfs/"
        module use /cvmfs/*
        export MODULEPATH="/neurodesktop-storage/containers/modules"              
        module use $MODULEPATH
        export CVMFS_DISABLE=true

if [ -f '/usr/share/' ]; then
        echo 'Run "ml av" to see which tools are available - use "ml <tool>" to use them in this shell.'
        if [ -v "$CVMFS_DISABLE" ]; then
                if [ ! -d $MODULEPATH ]; then
                        echo 'Neurodesk tools not yet downloaded. Choose tools to install from the Application menu.'

Restart the current shell or run

source ~/.bashrc

Use of containers in the module system

export SINGULARITY_BINDPATH='/cvmfs,/mnt,/home'
module use /cvmfs/*
ml fsl

3 - Datalad

Neurodesktop containers can be used in datalad container run

4 - Docker

Neurodesk Docker containers

Our containers are automatically built in and hosted on dockerhub or on github

Pull Docker containers

e.g. for a julia container docker

docker pull vnmd/julia_1.6.1

build singularity image from dockerhub

singularity build julia_1.6.1.simg docker://vnmd/julia_1.6.1

Replace julia_1.6.1 with your selected application. You can find the available containers here:

5 - Google Colab

Neurodesk Singularity Containers for Google Colab

Open a notebook in Google Colab and run the following commands to setup the Neurodesk environment:

import os
os.environ["LD_PRELOAD"] = "";
os.environ["APPTAINER_BINDPATH"] = "/content"
os.environ["MPLCONFIGDIR"] = "/content/matplotlib-mpldir"
os.environ["LMOD_CMD"] = "/usr/share/lmod/lmod/libexec/lmod"

!curl -J -O
!chmod +x

os.environ["MODULEPATH"] = ':'.join(map(str, list(map(lambda x: os.path.join(os.path.abspath('/cvmfs/'), x),os.listdir('/cvmfs/')))))

Once this setup is completed you can list Neurodesk applications like this:

import lmod
await lmod.avail()

and use applications like this:

await lmod.load('fsl/6.0.4')

This notebook demonstrates how to use all Neurodesk applications in Google Colab:


This is a google colab notebook that shows how to integrate with google drive and it contains an example how to run fMRIprep in google colab:

6 - Singularity

Neurodesk Singularity Containers

Our docker containers are converted to singularity containers and stored on Object storage.

Download Singularity Containers

First get an overview which containers are available as Singularity containers:

curl -s

assign the container name to a variable:

export container=itksnap_3.8.0_20201208

Then download the containers. An easy way is to use CURL (e.g. downloading from the US location):

curl -X GET${container}.simg -O

or from australia

curl -X GET${container}.simg -O

or from europe

curl -X GET${container}.simg -O

A faster way is pulling from multiple storage locations at once using aria2:


Transparent Singularity

The singularity containers can be also be used in combination with our Transparent Singularity Tool tool, that wraps the executables inside a container to make them easily available for pipelines. More information can be found here:

one example to do this is:

curl -s
export container=itksnap_3.8.0_20201208
git clone ${container}
cd ${container}
./ ${container}

7 - Windows 11 and Windows Subsystem for Linux

Use Neurocontainers on Windows 11 with WSL and Wayland Display Server

1. Install WSL

Follow the instructions to enable Windows Subsystem for Linux 2 in Windows 11:

2. Configure CVMFS, Singularity and LMOD (only needs to be done once)

Install build tools

sudo apt update
sudo apt install make gcc

Install singularity

export SINGULARITY_VERSION=3.9.3 VERSION=1.17.2 OS=linux ARCH=amd64
wget -q$VERSION.$OS-$ARCH.tar.gz 
sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz 
rm go$VERSION.$OS-$ARCH.tar.gz 
export GOPATH=${HOME}/go 
export PATH=/usr/local/go/bin:${PATH}:${GOPATH}/bin 
mkdir -p $GOPATH/src/ 
cd $GOPATH/src/ 
wget -q${SINGULARITY_VERSION}/singularity-ce-${SINGULARITY_VERSION}.tar.gz 
tar -xzvf singularity-ce-${SINGULARITY_VERSION}.tar.gz 
cd singularity-ce-${SINGULARITY_VERSION} 
./mconfig --prefix=/usr/local/singularity 
make -C builddir 
sudo make -C builddir install 
cd .. 
sudo rm -rf singularity-ce-${SINGULARITY_VERSION} 
sudo rm -rf /usr/local/go $GOPATH

Setup Bindpaths for Singularity (e.g. in .bashrc)

export PATH="/usr/local/singularity/bin:${PATH}"
export SINGULARITY_BINDPATH='/cvmfs,/mnt,/home'


Follow the instructions here:


sudo apt install lmod

3. Use Neurodesk containers

Initialize the neurodesk modules:

module use /cvmfs/*

Example usage of fsleyes:

ml fsl

List the available programs:

ml av