Saltar al contenido
Volver al catálogo
Proyecto container-runtimeSistemasExpertoPróximamente

Construye tu propio runtime de contenedores

Construye un runtime de contenedores desde cero. Aísla procesos con namespaces, cgroups y chroot para entender cómo Docker inicia una imagen.

Constrúyelo en tu lenguaje

El tester trata tu programa como una caja negra: sirve cualquier lenguaje. Estos son los más cómodos para este proyecto.

Idioma del temario

Las guías de las etapas se leen en este idioma. Solo aparecen los idiomas en los que este proyecto ya está traducido completo; el idioma de la interfaz no cambia.

De qué trata este proyecto

Proyecto en preparación: estamos completando y verificando el recorrido de implementación y sus pruebas. Las capacidades descritas son el objetivo del proyecto; todavía no está habilitado para comenzar.

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.

Hoja de ruta

8 etapas repartidas en 4 fases. Cada etapa trae su guía y sus tests: avanzas cuando pasan.

  1. Fase 12 etapas

    Aislar el proceso

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

  2. Fase 22 etapas

    Su propio sistema de ficheros

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

  3. Fase 32 etapas

    Poner límites

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

  4. Fase 42 etapas

    Red y privilegios

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

Antes de empezar

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
    Próximamente

    Construye tu propio shell

    Construye un shell POSIX desde cero. Usa fork, exec, tuberías y redirecciones para escribir un intérprete de comandos que ejecute programas reales.

    Intermedio12 etapas~14 hSistemas
    procesosforkexec+2

    C · Rust · Go · Zig

  • garbage-collector
    Próximamente

    Construye tu propio recolector de basura

    Construye un recolector de basura desde cero. Implementa marcado y barrido, rastrea objetos vivos y recupera memoria como los runtimes que usas a diario.

    Experto9 etapas~18 hSistemas
    memoriamarcado y barridopunteros

    C · C++ · Rust

  • neural-network
    Beta

    Construye tu propia red neuronal

    Construye una red neuronal desde cero. Implementa propagación hacia adelante, funciones de pérdida y descenso de gradiente, y entrena tu propio modelo.

    Principiante6 etapas~6 hSistemas
    aprendizaje automáticoredes neuronalesmatemáticas+1

    Python · TypeScript