Charliecloud es un sistema de contenedores orientado a HPC con nivel alto de seguridad debido a ejecutarse totalmente en espacio de usuario no privilegiado. Tiene compatibilidad con OCI y permite ejecutar contenedores construidos a partir de formato Dockerfile.
Charliecloud puede usarse en Drago ya que es software abierto con licencia Apache v.2.
Para poder usar charliecloud una vez logueado en drago.csic.es tendrá que cargar los siguientes módulos en mismo orden.
module unuse /dragofs/sw/campus/0.2/modules/all/Core
module unuse /dragofs/sw/restricted/0.2/modules/all/Core
module load foss/2021b
module load charliecloud/0.28
Para un uso básico basado controlado desde host sería tendríamos un script similar al siguiente:
#!/bin/bash
#SBATCH --partition=special # Specify partition name for job execution
# ### PART 2: modify according to your requirements:
# Arguments: Path to tarball, path to image parent directory.
set -e
tar=$1
imgdir=$2
img=${2}/$(basename "${tar%.tar.gz}")
if [[ -z $tar ]]; then
echo 'no tarball specified' 1>&2
exit 1
fi
printf 'tarball: %s\n' "$tar"
if [[ -z $imgdir ]]; then
echo 'no image directory specified' 1>&2
exit 1
fi
printf 'image: %s\n' "$img"
# Make Charliecloud available (varies by site).
module purge
module unuse /dragofs/sw/campus/0.2/modules/all/Core
module unuse /dragofs/sw/restricted/0.2/modules/all/Core
module load foss/2021b
module load charliecloud
# Unpack image.
srun ch-convert -o dir "$tar" “$imgdir”
# Run the app.
srun ch-run “$imgdir” -- hostname