El objetivo del autor era explorar el aislamiento de los contenedores escribiendo un pequeño programa que ejecuta un shell en un entorno aislado utilizando únicamente el conjunto mínimo de mecanismos del kernel de Linux. El programa, contained.c, usa clone con marcas de namespace para crear espacios de nombre separados para montaje, PID, IPC, red y UTS, y opcionalmente un espacio de nombre de usuario para el mapeo de UID/GID. Después de crear el proceso hijo, el código elimina la mayoría de las capacidades, instala un filtro seccomp para permitir solo unas pocas llamadas al sistema y limita los recursos mediante cgroups (memoria, CPU, pids, E/S de bloque) y la interfaz más antigua setrlimit. También prepara un nuevo espacio de nombre de montaje, vincula un directorio temporal y realiza un pivot_root a ese directorio antes de ejecutar el comando solicitado.

El mecanismo se basa en varias características complementarias de Linux: los namespaces aíslan objetos del kernel como el sistema de archivos y la tabla de procesos; las capacidades subdividen los privilegios de root para que el programa pueda eliminar los peligrosos; los filtros seccomprestringen qué llamadas al sistema puede invocar el hijo; cgroups y setrlimit limitan el uso de recursos como la memoria y la CPU; y los namespaces de montaje combinados con pivot_root cambian la vista del sistema de archivos raíz del hijo. El autor señala que el programa es intencionalmente mínimo y no pretende producir un sandbox seguro, sino más bien demostrar qué permisos son categóricamente inseguros para código no confiable.

El autor advierte que este ejercicio no es un límite seguro; los espacios de nombre de usuario, aunque útiles para mapear IDs, están desactivados por defecto en los kernels convencionales y históricamente han sido una fuente de errores de escalada de privilegios. El programa final tiene aproximadamente 570 líneas, ligeramente por encima del objetivo original de 500 líneas, lo que ilustra que los contenedores son esencialmente envolturas finas alrededor de características existentes del kernel, más que abstracciones nuevas y complejas. Esto sirve como recordatorio de que los tiempos de ejecución reales de contenedores añaden mecanismos de seguridad adicionales sobre estas mismas primitivas.