Qué es runc y cómo funciona

runc-que-es-y-como-funciona
runc-que-es-y-como-funciona

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.

PiezaNivelResponsabilidad
Docker CLIClienteEnvía órdenes como docker run o docker ps.
dockerdDaemonExpone la API y coordina objetos Docker.
containerdRuntime de alto nivelGestiona ciclo de vida, imágenes, snapshots y tareas.
containerd-shim-runc-v2Integración del runtimeAtiende las tareas de containerd e invoca runc para ejecutarlas.
runcRuntime de bajo nivel OCICrea 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 || true

En 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

Lecciones relacionadas del curso

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *