Cómo instalar Containerd Container Runtime en Ubuntu 22.04

Containerd es un tiempo de ejecución de contenedores de alto nivel compatible con OCI Image Spec y OCI Runtime Spec (Open Container Initiative). Containerd se ha creado haciendo hincapié en la simplicidad, la solidez y la portabilidad para el despliegue y el ciclo de vida de los contenedores. Está diseñado para ser fácilmente integrable en sistemas latentes como Docker y Kubernetes. Bajo el capó, la nueva versión de Docker utiliza el Containerd para gestionar el ciclo de vida de los contenedores. Y para Kubernetes, puedes utilizar Containerd como tiempo de ejecución del contenedor a través del CRI para gestionar el ciclo de vida de los contenedores en el clúster Kubernetes.

Este tutorial repasará cómo instalar el tiempo de ejecución de contenedores Containerd en un servidor Ubuntu 22.04. Este tutorial repasará dos métodos diferentes para instalar Containerd, manualmente descargando el paquete binario o e instalando Containerd a través del repositorio APT. Al final de este tutorial, tendrás el entorno de contenedores para tu desarrollo, también puedes utilizarlo como parte de la instalación del clúster Kubernetes.

Requisitos previos

Para seguir este tutorial, necesitarás los siguientes requisitos:

  • Un servidor Ubuntu 22.04 – Este ejemplo utilizará el servidor con el nombre de host «server-ubuntu».
  • Un usuario no root con privilegios administrativos root/sudo.

Instalación manual de Containerd

En el primer paso, aprenderás a instalar manualmente Containerd Container Runtime mediante un paquete binario. Esto significa que también tendrás que instalar algunos componentes del propio Containerd, como el plugin runc y CNI (Container Network Interface).

Tanto Containerd como todos sus componentes están disponibles en su repositorio de GitHub y listos para instalar.

Para instalar Containerd, consulta la página de publicación de Containerd en GitHub para obtener la última versión. A continuación, copia el enlace y descarga el paquete binario de Containerd utilizando«wget«. Después, extrae el archivo al directorio«/usr/local«.

En el momento de escribir esto, la última versión de Containerd es la v1.6.8. Descárgala utilizando el comando«wget» en tu servidor Ubuntu y extráela al directorio «/usr/local» mediante el comando«tar«.

wget https://github.com/containerd/containerd/releases/download/v1.6.8/containerd-1.6.8-linux-amd64.tar.gz
tar Cxzvf /usr/local containerd-1.6.8-linux-amd64.tar.gz

descargar containerd

Runc es una herramienta de línea de comandos que se utiliza para generar contenedores en sistemas Linux de acuerdo con la especificación OCI (Open Container Initiative). Para instalar runc, tendrás que visitar la página oficial de lanzamiento de runc en GitHub y obtener la última versión de runc y descargarla mediante el comando wget.

En el momento de escribir esto, la última versión de runc es la v1.1.3. Descárgala utilizando el comando wget e instálala como se indica a continuación.

wget https://github.com/opencontainers/runc/releases/download/v1.1.3/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc

Ahora comprueba el archivo binario runc utilizando el comando siguiente. Deberías ver que el archivo binario runc está disponible en el directorio«/usr/local/sbin«.

which runc

descargar runc

Ahora tendrás que instalar el plugin CNI (Container Network Interface) para el Containerd Container Runtime. El plugin CNI proporciona una funcionalidad de red para los Contenedores en el sistema Linux.

Antes de descargar el plugin CNI, asegúrate de visitar la página de publicación oficial de GitHub para obtener la última versión del plugin CNI.

En el momento de escribir esto, la última versión del plugin CNI es la v1.1.1. Descárgalo utilizando el comando wget como se indica a continuación.

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

A continuación, crea un nuevo directorio«/opt/cni/bin» que se utilizará como directorio de instalación del complemento CNI. A continuación, extrae en él el plugin CNI mediante el comando tar.

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

descargar plugin cni

Una vez que hayas instalado los tres componentes del Containerd Container Runtime, empezarás a configurar el Containerd.

Ejecuta el siguiente comando para crear un nuevo directorio«/etc/containerd«. A continuación, genera la configuración Containerd por defecto utilizando el comando«containerd» como se indica a continuación.

sudo mkdir -p /etc/containerd/
containerd config default | sudo tee /etc/containerd/config.toml

generar config containerd

Ahora ejecuta el siguiente comando para activar el«SystemdCgroup» para el tiempo de ejecución del contenedor Containerd. Este comando sustituirá la opción «SystemdCgroup= false» por«SystemdCgroup = true» en el archivo de configuración de Containerd «/etc/containerd/config.toml».

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

Ahora ejecuta el siguiente comando para descargar el archivo de servicio systemd para Containerd en el directorio«/etc/systemd/system«.

sudo curl -L https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /etc/systemd/system/containerd.service

A continuación, recarga el gestor systemd para aplicar el nuevo archivo de servicio.

sudo systemctl daemon-reload

Por último, inicia y activa el servicio «containerd» mediante el siguiente comando systemctl. Si la instalación se ha realizado correctamente, verás que no se ha encontrado ningún mensaje de error durante el inicio del proceso del servicio «containerd«.

sudo systemctl start containerd
sudo systemctl enable containerd

configurar servicio containerd

Comprueba y verifica el servicio «containerd» utilizando el siguiente comando. Deberías ver que el servicio «containerd» está actualmente en estado«en ejecución» y está habilitado«, lo que significa que se ejecutará automáticamente al arrancar el sistema.

sudo systemctl status containerd

comprueba el servicio containerd

Instalar Containerd a través del Repositorio Docker de APT

Ahora aprenderás a instalar Containerd Container Runtime a través del repositorio Docker de APT.

Primero, ejecuta el siguiente comando para instalar algunas dependencias de paquetes. Cuando se te pida que confirmes la instalación, introduce Y y pulsa INTRO.

sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

A continuación, ejecuta el siguiente comando para crear un nuevo directorio y descargar la clave GPG para el repositorio Docker.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Añade el repositorio Docker a tu sistema utilizando el siguiente comando.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ahora ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de tu sistema Ubuntu. A continuación, instala el paquete«containerd.io» como Containerd Container Runtime. La instalación comenzará automáticamente.

sudo apt update
sudo apt install containerd.io

Una vez finalizada la instalación, inicia y activa el servicio «containerd» mediante el siguiente comando systemctl.

sudo systemctl start containerd
sudo systemctl enable containerd

A continuación, comprueba y verifica el servicio «containerd» utilizando el siguiente comando. Deberías ver que el servicio «containerd» está activo y en ejecución.

sudo systemctl status containerd

comprueba el servicio containerd

A continuación, generarás un nuevo archivo de configuración para el tiempo de ejecución del contenedor «containerd».

Ejecuta el siguiente comando para respaldar la configuración por defecto proporcionada por el repositorio Docker. A continuación, genera un nuevo archivo de configuración utilizando el comando«containerd» como se indica a continuación.

sudo mv etc/containerd/config.toml etc/containerd/config.toml.orig
containerd config default | sudo tee /etc/containerd/config.toml

Ahora ejecuta el comando siguiente para habilitar el«SystemdCgroup»para el Containerd.

sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

A continuación, también tendrás que instalar el plugin CNI (Container Network Interface) para la instalación de Containerd a través del repositorio Docker de APT.

Ejecuta el siguiente comando wget para descargar el plugin CNI.

wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz

Ahora crea un nuevo directorio«/opt/cni/bin» utilizando el siguiente comando. A continuación, extrae el plugin CNI mediante el comando tar como se indica más abajo.

mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.1.1.tgz

Por último, ejecuta el siguiente comando para reiniciar el servicio Containerd y aplicar los nuevos cambios.

sudo systemctl restart containerd

En este punto, el tiempo de ejecución del contenedor Containerd se está ejecutando ahora con el plugin CNI y el SystemdCgroup.

Comunicarse con Containerd mediante nerdctl

ContaiNERD CTL es una herramienta de línea de comandos para gestionar contenedores para el tiempo de ejecución de contenedores Containerd. Es compatible con Docker CLI para Docker y tiene la misma UI/UX que el comando «docker».

La línea de comandos nrdctl también admite Docker Compose mediante el comando «nerdctl compose», también admite el modo sin raíz del contenedor, la imagen lazy-pulling mediante OverlayBD y Stargz, admite imágenes cifradas y distribución de imágenes P2P mediante IPFS.

Ejecuta el siguiente comando para descargar el archivo binario«nerctl«. A continuación, extráelo mediante el comando tar al directorio«/usr/local/bin«.

wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local/bin nerdctl-0.22.2-linux-amd64.tar.gz

Ahora comprueba el archivo binario «nerctl» mediante el siguiente comando.

which nerdctl

instalar nerdctl

A continuación, aprenderás a ejecutar un contenedor con el tiempo de ejecución de contenedores Containerd mediante el comando «nerdctl». La herramienta de línea de comandos «nerdctl» es compatible con Docker, por lo que el comando para gestionar contenedores es similar al de Docker.

Ejecuta el nuevo contenedor con el nombre «nginx» utilizando el comando «nerdctl» que aparece a continuación. El contenedor «nginx» se ejecutará en el puerto’80‘ tanto para el contenedor como para el host, y está basado en la imagen«nginx:alpine«.

sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine

ejecutar contenedor nginx con containerd nerdctl

Ahora comprueba el contenedor que se está ejecutando actualmente en tu sistema utilizando el siguiente comando«nerdctl«. Y deberías ver el contenedor«nginx» en ejecución.

sudo nerdctl ps

comprobar la ejecución del contenedor nerdctl

A continuación, comprueba y verifica la lista de imágenes de contenedor disponibles en tu sistema utilizando el siguiente comando. Deberías ver la imagen «nginx:alpine» descargada.

sudo nerdctl images

nerdctl comprobar imágenes

Por último, ejecuta el siguiente comando curl para comprobar el contenedor«nginx«. Y deberías ver la página index. html por defecto del contenedor «nginx«.

curl localhost

acceder al contenedor nginx

Además, también puedes comprobar y verificar los registros del contenedor «nginx» utilizando el siguiente comando«nerdctl«.

sudo nerdctl logs nginx

nerdctl comprobar registros

Conclusión

A lo largo de este tutorial, has aprendido dos métodos para instalar el tiempo de ejecución del contenedor Containerd. Has aprendido a instalar Containerd manualmente descargando el paquete binario Container y a instalar Containerd a través del repositorio Docker de APT.

Por último, ahora has aprendido a instalar la herramienta de línea de comandos nerdctl y el uso básico de nerdctl para gestionar los contenedores que se ejecutan en el entorno del tiempo de ejecución de contenedores Containerd. Ahora también podrás configurar el clúster Kubernetes utilizando el tiempo de ejecución de contenedores Containerd.

También te podría gustar...