Skip to content
Back to the catalog
Project container-runtimeSystemsExpertBeta

Tu propio contenedor

namespaces, cgroups y chroot. Aísla un proceso a mano y entiende qué hace Docker cuando arranca una imagen.

Build it in your language

The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.

Guide language

The stage guides read in this language. Only languages this project is fully translated into show up here; the interface language does not change.

What this project is about

Un contenedor no es una máquina virtual ni una tecnología nueva: es un proceso normal de Linux al que el kernel le ha mentido sobre lo que puede ver. Este reto te enseña a contar esas mentiras.

Vas a aislar un proceso a mano con namespaces, cambiarle la raíz del sistema de ficheros, limitarle CPU y memoria con cgroups y quitarle privilegios. Al final tendrás un run propio capaz de arrancar el sistema de ficheros de una imagen real.

Roadmap

8 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.

  1. Phase 12 stages

    Aislar el proceso

    Lanza un hijo con namespaces propios de PID, UTS y mount.

    1. 01Crear namespaces
    2. 02Proceso init del contenedor
  2. Phase 22 stages

    Su propio sistema de ficheros

    rootfs extraído, pivot_root y montaje de /proc.

    1. 01Rootfs y capas
    2. 02pivot_root y proc
  3. Phase 32 stages

    Poner límites

    cgroups v2 para CPU y memoria, y comportamiento al alcanzarlos.

    1. 01Límite de memoria
    2. 02Límite de CPU
  4. Phase 42 stages

    Red y privilegios

    Namespace de red, user namespaces y reducción de capabilities.

    1. 01Namespace de red
    2. 02Usuarios y capabilities

Before you start

Un runtime de contenedores mínimo para Linux: creación de namespaces (PID, mount, UTS, network, user), pivot_root sobre un rootfs extraído, montaje de /proc, límites de CPU y memoria con cgroups v2, reducción de capabilities y una interfaz de línea de comandos estilo run.

  • shell
    Beta

    Build your own shell

    fork, exec, pipes and redirection. Build a POSIX command interpreter that runs real programs.

    Intermediate12 stages~14 hSystems
    procesosforkexec+2

    C · Rust · Go · Zig

  • neural-network
    Ready to build

    A Neural Network from Scratch

    Build and train a neural network from first principles: forward pass, loss functions, and gradient descent optimization.

    Beginner6 stages~6 hSystems
    machine learningneural networksmath+1

    Python · TypeScript

  • garbage-collector
    Beta

    A garbage collector

    Mark-and-sweep from scratch. Manage memory the way the runtimes you use daily do without you noticing.

    Expert9 stages~18 hSystems
    memoriamark & sweeppunteros

    C · C++ · Rust