En este tutorial, te guiaré paso a paso sobre cómo instalar Containerd en Ubuntu 24.04. Containerd es un tiempo de ejecución de contenedores esencial para desplegar y gestionar aplicaciones en entornos Linux. Seguir estos pasos te permitirá configurar Containerd de manera rápida y sencilla en tu sistema Ubuntu 24.04, asegurando un despliegue eficiente y confiable de contenedores en tu infraestructura.
Containerd es un tiempo de ejecución de contenedores de código abierto que se enfoca en proporcionar una plataforma robusta y confiable para ejecutar contenedores en sistemas operativos Linux. Fue desarrollado originalmente por Docker y luego se donó a la Cloud Native Computing Foundation (CNCF). Containerd es utilizado por varios sistemas de orquestación de contenedores, como Kubernetes, para administrar la creación, ejecución y destrucción de contenedores de manera eficiente y confiable. Proporciona una interfaz para administrar imágenes de contenedores, la creación de contenedores y su ciclo de vida. Además, ofrece características avanzadas como la capacidad de administrar volúmenes, redes y la interacción con los sistemas de archivos subyacentes.
(Generado con ChatGPT 3.5)
Procedimiento para instalar containerd en Ubuntu 24.04:
El primer paso como siempre es actualizar la informaciónd de la biblioteca de paquetes. Y actualizar nuestro sistema.
sudo apt update
sudo apt full-upgrade
Una vez finalizada la actualización procedemos a instalar containerd en nuestro equipo con Ubuntu 24.04.
sudo apt install containerd
sudo systemctl enable --now containerd
Y verificamos que todo funcione ejecutando:
sudo systemctl status containerd
<- Y ahora como ejecuto un contenedor???
-> Necestiamos un instalar nerdctl.
Que es «nerdctl»:
Nerdctl es una herramienta de línea de comandos compatible con Docker, pero impulsada por containerd. Proporciona una interfaz de línea de comandos similar a Docker, lo que facilita la transición de los usuarios de Docker a containerd. Sin embargo, en lugar de utilizar el demonio Docker, nerdctl interactúa directamente con containerd. Esto significa que se puede utilizar para administrar contenedores sin necesidad de Docker. Nerdctl está diseñado para ser más ligero y eficiente que Docker, ya que aprovecha las funcionalidades de containerd de manera más directa.
(Generado con ChatGPT 3.5)
Procedimiento para instalar nerdctl:
Acá nos encontramos con la primera «dificultad», nerdctl no esta como paquete al momento de crear este tutorial. Hay que instalarlo a mano.
Buscar la última versión en github, en el ejemplo ejecuto un comando en el 1/2 de la descarga para hacer compatible el binario a descargar con la arquitectura del servidor en uso.
Si nerdctl lo va a utilizar un solo usuario:
Para eso lo primero que vamos a hacer es crear el directorio .local en nuestro home.
Luego accedemos al ~/.local y descargamos y descomprimimos los binarios de nerdctl y complementos.
mkdir -p ~/.local/
cd ~/.local/
URL="https://github.com/containerd/nerdctl/releases/download/v2.0.2/nerdctl-full-2.0.2-linux-$(dpkg --print-architecture).tar.gz" && curl -L $URL | tar xz
Si nerdctl va a ser utilizado por multiples usuarios:
Desplegamos el binario en /usr/local
cd /usr/local/
URL="https://github.com/containerd/nerdctl/releases/download/v2.0.2/nerdctl-full-2.0.2-linux-$(dpkg --print-architecture).tar.gz" && curl -L $URL | sudo tar xz
Ejecutando un contenedor con nerdctl:
Y para verificar que todo funcione, vamos a ejecutar el contenedor hello-world, el binario de nerdctl esta en el ~/.local/bin/
cd ~/.local/bin
sudo ./nerdctl --cni-path=$HOME/.local/libexec/cni run hello-world
En este ejemplo vemos que tenemos que definir la ruta del binario cni (para habilitar el networking en los contenedores).
Para simplificar la operatoria, voy a crear un alias, que me permita ejecutar este comando desde cualquier ruta y no tener que definir la ubicación del binario «cni» cada vez que quiero ejecutar un contendor.
Modo ususario unico:
echo "alias nerdctl=\"sudo $HOME/.local/bin/nerdctl --cni-path=$HOME/.local/libexec/cni \"" >> ./.bash_aliases
Modo multiples usuarios:
echo "alias nerdctl=\"sudo /usr/local/bin/nerdctl --cni-path=/usr/local/libexec/cni \"" >> /etc/profile.d/00-aliases.sh
Para que el cambio surja efecto tengo que cerrar la terminal y abrir una nueva.
Y si ahora ejecuto desde mi home el comando funciona igual.
nerdctl run hello-world
Ejecutando / Desplegando un compose:
Para este paso voy a usar un compose simple que había utilizado en el tutorial Docker-Compose MySQL SERVER 5.7.
El docker-compose.yml tiene este contenido:
version: '3.1'
services:
db:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: S3cr3t0
volumes:
- /var/docker-data/mysql-5.7:/var/lib/mysql
Y lo tengo ubicado en /docker-compose/mysql 5.7
nerdctl compose up
Verifico que funcione correctamente primero listando los contenedores en ejecución.
nerdctl ps
Y después me contecto al motor utilizando el Oracle SQL Developer con el procedimientonerdctl ps descripto en este tutorial.
Una vez terminadas las pruebas bajamos el compose con el comando:
nerdctl compose down