TEL-420 Sistemas Paralelos P5b taller docker hpc · M5
M5 Guía de Práctica / Taller
Descargar .md

P5b · Taller de contenerización con Docker y Singularity/Apptainer para HPC

Contenido del programa: §20.5 · contenido 5.2 Horas de laboratorio: 4 · Modalidad: individual o parejas


1. Propósito

Empaquetar aplicaciones científicas paralelas y sus dependencias complejas en contenedores portables y reproducibles, comparando Docker (entorno estándar de desarrollo) con Singularity / Apptainer (estándar de supercómputo seguro sin privilegios de root e integración nativa con MPI y GPUs).


2. Fundamentación técnica

En entornos tradicionales de servidores compartidos, Docker presenta serias objeciones de seguridad en HPC porque su demonio se ejecuta con privilegios de administrador (root), permitiendo potencial escalada de privilegios. Apptainer (Singularity) resuelve esto ejecutando el contenedor con los mismos privilegios del usuario del sistema operativo y mapeando directamente los recursos de red InfiniBand/Ethernet y dispositivos GPU de forma nativa.


3. Actividades guiadas

Ejercicio 1: Construcción de imagen Docker reproducible para OpenMPI

Elaborar un Dockerfile optimizado:

FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
    build-essential \
    openmpi-bin \
    libopenmpi-dev \
    openssh-server \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . /app
RUN mpicc -O3 montecarlo_mpi.c -o montecarlo_mpi -lm
CMD ["mpirun", "--allow-run-as-root", "-np", "4", "./montecarlo_mpi", "50000000"]

Construir la imagen con docker build -t hpc-mpi:v1 . y ejecutar la prueba verificando el aislamiento del entorno.

Ejercicio 2: Conversión a formato Singularity/Apptainer (.sif)

  1. Convertir la imagen Docker a imagen SIF (Singularity Image Format): ``bash apptainer build mpi_app.sif docker-daemon://hpc-mpi:v1 ``
  2. Ejecutar directamente sobre el host sin root: ``bash apptainer exec mpi_app.sif ./montecarlo_mpi 50000000 ``
  3. Lanzar mediante mpirun externo del host orquestando múltiples contenedores: ``bash mpirun -np 4 apptainer exec mpi_app.sif ./montecarlo_mpi 50000000 ``

4. Entregables

  1. Archivo Dockerfile y receta de Apptainer comentados.
  2. Documento técnico que justifique la selección entre Docker y Apptainer según la file:///home/eliasdev/sistemas_paralelos/10-modulos/M5-orquestacion-cloud/rubrica-documentacion-despliegue.md.