Qué 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:
- https://www.linkedin.com/in/sergioarmgpl
- https://sergiops.xyz
- https://x.com/sergioarmgpl
- https://www.instagram.com/sergioarmgpl/
Este blog post es contenido extra de mi libro de Edge Computing y Kubernetes: