CVMFS architecture
We store our Singularity containers unpacked on CVMFS. We tried the DUCC tool in the beginning, but it was causing too many issues with Docker Hub and we were rate limited. The script to unpack our Singularity containers is here: https://github.com/neurodesk/neurocommand/blob/main/cvmfs/sync_containers_to_cvmfs.sh.
It gets called by a cron job on the CVMFS Stratum 0 server and relies on the log.txt file being updated via an action in the neurocommand repository (https://github.com/neurodesk/neurocommand/blob/main/.github/workflows/upload_containers_simg.sh).
The Stratum 1 servers then pull this repo from Stratum 0 and our desktops mount these repos (configured here: https://github.com/neurodesk/neurodesktop/blob/main/Dockerfile).
The startup script (https://github.com/neurodesk/neurodesktop/blob/main/config/jupyter/before_notebook.sh) sets up CVMFS and tests which server is fastest during the container startup.
This can also be done manually:
sudo cvmfs_talk -i neurodesk.ardc.edu.au host infosudo cvmfs_talk -i neurodesk.ardc.edu.au host probecvmfs_config stat -v neurodesk.ardc.edu.au