Ir al contenido

Creando containers con containerd & nerdctl en ARM

28 de mayo de 2026 por
Creando containers con containerd & nerdctl en ARM
Sergio Méndez
Hola a todos. Es hora de profundizar en cómo crear contenedores con containerd, un entorno de ejecución ligero, junto con nerdctl. nerdctl permite a los usuarios interactuar con containerd para crear contenedores de forma similar a Docker.

containerd ofrece funcionalidades similares a las de Docker, pero con un menor consumo de memoria y CPU, lo que resulta ideal para soluciones de IoT o edge computing. Además, utilizamos un microprocesador ARM que ofrece un buen equilibrio entre consumo de energía y CPU, por lo que containerd se integra perfectamente con ARM.

Los contenedores también son la herramienta ideal para acelerar el proceso de actualización de software y lograr modularidad y portabilidad al implementar soluciones. En esta publicación, aprenderás cómo containerd, junto con nerdctl, puede ayudarte con este caso de uso. Consulta sus sitios web oficiales para obtener más información: https://containerd.io y https://github.com/containerd/nerdctl.

Qué aprenderás?
En esta entrada del blog aprenderás:
  • Instalar el entorno de ejecución de contenedores containerd en dispositivos ARM (Raspberry Pi).
  • Instalar nerdctl para usar containerd y crear contenedores.
  • Crear un contenedor básico con la línea de comandos de nerdctl.
Requisitos
  • Raspberry Pi o instancia ARM en la nube.
  • Ubuntu >= 22.04
  • Instalar containerd
  • Instalar el complemento CNI
  • Instalar nerdctl

Así que vamos a crear contenedores con containerd.

Creating Python containers for ARM

1. Instala containerd corriendo los siguiente comandos:

sudo apt-get update
sudo apt-get install -y containerd

Estos comandos instalan containerd en tu dispositivo.

2. Instala nerdctl con los siguientes comandos:

NERDCTL_VERSION=2.0.3
wget https://github.com/containerd/nerdctl/releases/download/v2.0.3/nerdctl-$NERDCTL_VERSION-linux-arm64.tar.gz 
tar -xzvf nerdctl-$NERDCTL_VERSION-linux-arm64.tar.gz -C /sbin
CNI_VERSION=1.6.2
wget https://github.com/containernetworking/plugins/releases/download/v$CNI_VERSION/cni-plugins-linux-arm64-v$CNI_VERSION.tgz
mkdir -p /opt/cni/bin
tar -xzvf cni-plugins-linux-arm64-v$CNI_VERSION.tgz -C /opt/cni/bin

3. Ahora crea un container con nerdctl. Este comando creará un container de NGINX exponiendo el puerto 80 del container al puerto 8080 del host:

sudo nerdctl run --restart always -d -p 80:80 --name=nginx nginx

4. Prueba el container con curl ejecutando este comando:

curl localhost:8080

Nota: Este comando retorna el texto It works.

Comandos Extra

Estos son algunos comandos que te serviran para containerd:

1. Reinicia el servicio:

sudo systemctl restart containerd

Estos son algunos comandos que te serviran para usar nerdctl:

2. Listar imágenes

sudo nerdctl images

3. Push de imágenes

sudo nerdctl images

4. Pull de imágenes

sudo nerdctl images

5. Build/Construir imágenes basadas en el Dockerfile actual

sudo nerdctl build . 

6. Tag de imágenes

sudo nerdctl tag old_image:old_tag new_image:new_tag

Donde queda Podman, Docker y CRI-O?

Espera un momento. Déjame decirte que hay alternativas, pero containerd en particular tiene un bajo consumo de memoria y CPU, por lo que es ideal para dispositivos IoT y Edge. Podman podría satisfacer estas necesidades e interactuar directamente con RunC, que no requiere demonio. Docker, al tener más opciones y un demonio que consume más recursos, quizás no se ajuste a las necesidades de IoT. CRI-O podría ser una opción, pero fue diseñado para ser ligero y cumplir con la normativa OCI. Además, pregúntate si necesitas compatibilidad con ARM. La decisión final depende de cuánta energía quieras consumir, las funcionalidades, etc. Con containerd, puedes equivocarte con IoT y Edge. Prueba este tutorial para ver el rendimiento de containerd.

Gracias por leer este artículo

Si te gusto comenta 😀

También puedes seguirme en:

Este blog post es contenido extra de mi libro de Edge Computing y Kubernetes: