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.
Descargamos la imagen:
ch-image pull ubuntu:22.04
Vemos la lista de imagenes descargadas:
ch-image list
La movemos a nuestro directorio:
ch-convert -o dir "directorio que elijamos"
¡Atención! Los nodos de login están destinados únicamente para operaciones ligeras como descarga de imágenes o construcción de contenedores. No ejecute contenedores directamente en estos nodos, ya que puede generar una sobrecarga significativa que afecte a otros usuarios.
Ejecutamos el contenedor:
ch-run “directorio elegido” -- hostname
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"
# Unpack image.
srun ch-convert -o dir "$tar" “$imgdir”
# Run the app.
srun ch-run “$imgdir” -- hostname