En esta lección vas a entender qué es runc y qué función cumple dentro de Docker Engine. Es el runtime de bajo nivel que crea el contenedor a partir de la configuración OCI y utiliza mecanismos del kernel Linux, como namespaces y cgroups, para aislar el proceso.
En el uso diario no sueles llamar directamente a este runtime. Normalmente escribes comandos Docker, dockerd coordina la operación y containerd gestiona el ciclo de vida; después, el runtime OCI crea el proceso aislado siguiendo la especificación.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Papel de runc en Docker Engine
Problema: Docker necesita una forma estándar de convertir una configuración OCI en un proceso aislado real en Linux, sin que la CLI ni dockerd tengan que implementar todos los detalles de bajo nivel.
Qué aporta Docker: Docker se apoya en una cadena de componentes. runc queda al final de esa cadena y se encarga de crear el contenedor en el sistema operativo.
| Pieza | Nivel | Responsabilidad |
|---|---|---|
| Docker CLI | Cliente | Envía órdenes como docker run o docker ps. |
| dockerd | Daemon | Expone la API y coordina objetos Docker. |
| containerd | Runtime de alto nivel | Gestiona ciclo de vida, imágenes, snapshots y tareas. |
| containerd-shim-runc-v2 | Integración del runtime | Atiende las tareas de containerd e invoca runc para ejecutarlas. |
| runc | Runtime de bajo nivel OCI | Crea el proceso aislado usando el kernel Linux. |
Cómo funciona runc en el flujo de Docker
En la integración de runtime v2, containerd prepara la tarea y la delega en containerd-shim-runc-v2. El shim llama a runc para aplicar la configuración OCI y conserva el canal de gestión con containerd, al que comunica el estado y la salida del proceso.
docker run --rm alpine:3.24 uname -a
# La CLI habla con dockerd; Docker delega en containerd y runc crea el proceso aislado.El comando inicia un contenedor temporal de Alpine, ejecuta uname -a dentro de él y muestra información del kernel. La opción –rm elimina el contenedor al terminar; el ejemplo permite observar el resultado del flujo, aunque no ejecuta runc de forma manual.
- La CLI pide una acción a dockerd.
- dockerd resuelve la intención Docker: imagen, red, volúmenes, configuración y permisos.
- containerd gestiona la tarea y se comunica con el runtime de bajo nivel.
- runc crea el proceso aislado con namespaces, cgroups, filesystem y configuración OCI.
Qué hace runc realmente
runc no descarga imágenes ni ofrece la API de Docker. Recibe un bundle OCI preparado, interpreta su configuración y ejecuta el proceso Linux aislado; en ese arranque aplica los recursos descritos, como namespaces, grupos de control y montajes.
Namespaces
Los namespaces separan vistas del sistema: procesos, red, montajes, usuarios y otros recursos. Gracias a ellos, un proceso dentro del contenedor ve un entorno aislado.
cgroups
Los cgroups permiten limitar y medir recursos como CPU, memoria o procesos. No son exclusivos de Docker, pero son una pieza clave para controlar contenedores en Linux.
Configuración OCI
OCI define un formato estándar para describir cómo debe arrancar un contenedor. El runtime interpreta esa configuración y crea el proceso según esas reglas.
Comandos seguros para ubicarlo
Estos comandos solo ayudan a observar si el sistema conoce runc y qué runtimes ve Docker. No cambian configuración ni borran recursos.
docker info | grep -i runtime
which runc || true
runc --version || trueEn algunas instalaciones, runc puede estar en una ruta gestionada por paquetes o integrado como dependencia del runtime. Si no aparece como comando directo, no significa automáticamente que Docker no pueda ejecutar contenedores.
Lo importante para un perfil SysAdmin o DevOps no es usarlo manualmente, sino saber dónde encaja. Si el daemon responde, containerd está activo y aun así fallan tareas de bajo nivel, entonces tiene sentido mirar runtime, permisos, perfiles de seguridad o compatibilidad del kernel.
Errores comunes al usar runc
- Pensar que runc es Docker completo: es solo una pieza de bajo nivel.
- Intentar usar runc directamente para tareas diarias que normalmente resuelve Docker o Compose.
- Confundir aislamiento con seguridad perfecta: un contenedor no es una VM ni una frontera invulnerable.
- Depurar un fallo de aplicación como si fuera siempre un fallo del runtime.
- Tocar runtimes en un servidor sin entender el impacto sobre contenedores en ejecución.
Cuándo profundizar más
Esta lección es una introducción para entender el mapa. Si trabajas con runtimes alternativos, hardening profundo, seccomp, AppArmor, rootless containers o Kubernetes, ahí sí conviene estudiar OCI y runc con más detalle.
Para el curso de Docker, quédate con esta idea: runc es el runtime OCI de bajo nivel que crea el proceso aislado del contenedor en Linux.
Documentación oficial y recursos
- runc project: proyecto oficial del runtime.
- Open Container Initiative: estándar OCI para contenedores.
- Linux namespaces: referencia técnica sobre namespaces.
- Linux cgroups: referencia técnica sobre cgroups.
Lecciones relacionadas del curso
- Docker Engine: entiende el motor que coordina estas piezas.
- Qué es containerd y cómo funciona: repasa el runtime de alto nivel.
- Qué es dockerd y cómo funciona: entiende el daemon que recibe las peticiones.

