Qué es containerd y cómo funciona

containerd-que-es-y-como-funciona
containerd-que-es-y-como-funciona

En esta lección vas a entender qué es containerd y qué papel desempeña dentro de Docker Engine. Este runtime de alto nivel gestiona la transferencia y el almacenamiento de imágenes, los snapshots y las tareas de contenedor, y coordina la comunicación con runtimes de bajo nivel como runc.

No hace falta interactuar directamente con este componente para empezar con Docker, pero entender su papel evita confusiones. Docker no ejecuta todo por sí solo: dockerd coordina la experiencia Docker y delega en el runtime varias operaciones cercanas a la ejecución de contenedores.

👉 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.

Qué es containerd y cómo funciona

Problema: Docker necesita una pieza estable que gestione contenedores, imágenes y ejecución de bajo nivel sin mezclar todo con la interfaz de usuario de Docker.

Qué aporta Docker: Docker Engine puede delegar en containerd operaciones del ciclo de vida del contenedor. Así dockerd se centra en la API, objetos Docker y experiencia de usuario, mientras containerd gestiona tareas más próximas al runtime.

PiezaResponsabilidadCómo recordarlo
dockerdAPI y coordinación de objetos Docker.El daemon con el que habla la CLI.
containerdTransferencia de imágenes, snapshots y ciclo de vida de contenedores y tareas.El runtime de alto nivel.
runcCreación del contenedor OCI en el sistema.La pieza de bajo nivel.
kernel LinuxNamespaces, cgroups y aislamiento real.La base donde corre el proceso.

Cómo encaja containerd en Docker Engine

Cuando ejecutas docker run, la CLI envía una petición a dockerd. El daemon resuelve la intención de Docker, prepara redes, volúmenes y configuración, y usa containerd para crear y gestionar la tarea asociada al contenedor.

En la configuración habitual, dockerd inicia y administra containerd como un proceso separado. Desde Docker Engine 29.7 existe también un modo experimental que integra el servidor containerd en el proceso de dockerd; los shims de las tareas siguen ejecutándose aparte. Por eso, el esquema describe las responsabilidades lógicas, aunque la disposición de procesos puede variar.

docker pull nginx:alpine
docker run --rm nginx:alpine nginx -v
# Docker pide al daemon; el daemon delega parte del ciclo de vida en containerd.

En este ejemplo, docker pull descarga la imagen. Después, docker run crea un contenedor temporal y ejecuta nginx -v para mostrar la versión; la opción –rm elimina el contenedor cuando termina. La CLI solicita la operación al daemon y este delega en el runtime las tareas de ejecución.

  • La imagen puede descargarse y prepararse como contenido utilizable por el runtime.
  • Los snapshots representan el filesystem que verá el contenedor.
  • La tarea es el proceso en ejecución gestionado por el runtime.
  • runc termina creando el contenedor OCI usando primitivas del kernel Linux.

Cómo comprobar containerd en Linux

En la configuración habitual de Linux, containerd aparece como servicio propio. Si está activo el modo experimental de containerd integrado, disponible desde Docker Engine 29.7, el servidor puede ejecutarse dentro de dockerd y no aparecer como un servicio separado; comprueba la configuración de Docker y sus registros. Los comandos siguientes solo inspeccionan el sistema: no cambian ajustes ni borran recursos.

systemctl status containerd
ps -ef | grep '[c]ontainerd'
docker info | grep -i runtime
  • systemctl status containerd muestra si el servicio está activo.
  • ps permite ver el proceso en ejecución.
  • docker info ayuda a ver runtimes disponibles desde la perspectiva de Docker.

Diferencias entre containerd, dockerd y runc

dockerd

dockerd expone la API de Docker, recibe órdenes de la CLI y coordina objetos como contenedores, imágenes, redes y volúmenes. Es la cara principal de Docker Engine para el usuario.

containerd

Este runtime gestiona el ciclo de vida de los contenedores de forma más genérica. No está limitado a la CLI de Docker y también lo pueden usar otras plataformas que necesitan ejecutar contenedores.

runc

runc es el runtime de bajo nivel compatible con OCI. Se encarga de crear el proceso aislado usando capacidades del kernel. Normalmente no lo invocas a mano en el flujo diario de Docker.

Errores comunes con containerd

  • Pensar que este runtime sustituye a Docker: en este contexto, es una pieza que Docker usa por debajo.
  • Confundir el runtime con un contenedor concreto: es un servicio, no una aplicación dentro de tu stack.
  • Reiniciar containerd sin considerar que puede afectar contenedores en ejecución.
  • Depurar errores de Docker mirando solo la CLI y olvidando que puede fallar el daemon o el runtime.
  • Intentar usar herramientas internas de containerd sin entender namespaces, snapshots o configuración del sistema.

Cuándo profundizar más

Esta lección solo te da el mapa básico. Si estás administrando nodos de Kubernetes, runtimes alternativos, snapshots, CRI o problemas profundos de runtime, conviene estudiar containerd con más detalle y separar esa investigación de una lección introductoria de Docker.

En el curso de Docker, recuerda la idea esencial: este runtime de alto nivel gestiona imágenes, snapshots, tareas y ejecución de contenedores.

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 *