Cómo instalar y utilizar Podman (alternativa a Docker) en Ubuntu 20.04

Podman es una herramienta de código abierto para gestionar contenedores, imágenes, volúmenes y pods (grupo de contenedores). Utiliza las API de la biblioteca libpod para gestionar los ciclos de vida de los contenedores y es compatible con varios formatos de imágenes de contenedores, incluidas las imágenes OCI (Open Container Initiative) y Docker.

Podman es un motor de contenedores que cumple con la OCI (Open Container Initiative). Es compatible con la interfaz CLI de Docker y te permite ejecutar el contenedor sin raíz (ejecutar el contenedor sin privilegios de raíz). Podman fue lanzado como parte de Red Hat Enterprise Linux, diseñado para ser la próxima generación de herramientas de contenedores de Linux con una experimentación y desarrollo de características más rápido.

En este tutorial, aprenderás a instalar Podman en el sistema Ubuntu 20.04. Instalarás Podman y aprenderás los usos básicos de Podman para gestionar contenedores Docker, imágenes y volúmenes.

Requisitos previos

  • Un servidor Ubuntu 20. 04 – asegúrate de que todos los paquetes son la última versión, para librarte de dependencias obsoletas y que te lleven a un error durante la instalación.
  • Un usuario con privilegios de root, o usuario root – para instalar nuevos paquetes y cambiar la configuración de todo el sistema.

Instalación de Podman en Ubuntu 20.04

Al principio, vas a añadir un repositorio de terceros y una clave para instalar podman en el sistema Ubuntu 20.04.

1. Ejecuta el siguiente comando para exportar las variables de entorno en el archivo‘/etc/os-release‘.

. /etc/os-release

2. Añade el repositorio de podman con la versión estable y añade la clave GPG a tu sistema utilizando el siguiente comando.

echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list

curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add -

3. Actualiza/actualiza los repositorios de Ubuntu y actualiza todos los paquetes a la última versión.

sudo apt update
sudo apt -y upgrade

Añadir repositorio podman ubuntu 20.04

4. Después, instala podman utilizando el comando apt que aparece a continuación.

sudo apt install podman

Escribe‘y‘ y pulsa‘Enter’ para continuar la instalación.

Instalar Podman en Ubuntu 20.04

5. Una vez completada la instalación, verifica la versión de podman utilizando el siguiente comando.

podman version

A continuación se muestra la salida similar que obtendrás.

Comprueba la versión de podman

Como puede verse, has instalado podman v3.3.1 compilado con Go 1.16 para la arquitectura Linux amd64 (64 bits).

Crear un nuevo usuario y ejecutar el contenedor hello-world

Podman te permite ejecutar contenedores bajo el usuario sin privilegios de root. Para esta etapa, añadirás un nuevo usuario y ejecutarás el contenedor ‘hello-world’ basado en la imagen Docker.

1. Ejecuta el siguiente comando para añadir un nuevo usuario ‘johndoe’.

useradd -m -s /bin/bash johndoe
passwd johndoe

Escribe una nueva contraseña para el usuario ‘johndoe‘.

2. A continuación, inicia la sesión como usuario ‘johndoe’ y ejecuta el contenedor basado en la imagen Docker ‘hello-world’.

Accede como usuario ‘johndoe‘.

su - johndoe

Ejecuta el nuevo contenedor basado en la imagen Docker ‘hello-world‘ utilizando el comando podman.

podman run hello-world

Se te preguntará qué registro de contenedores quieres utilizar, elige el registro de contenedores ‘docker.io’ y verás una salida similar a la siguiente.

Podman ejecuta el contenedor hello-world

3. Para verificar tu contenedor e imágenes en la máquina local, ejecuta el siguiente comando.

podman ps -a
podman images

Verás que se ha creado un nuevo contenedor y el estado actual es‘Exited‘. El contenedor está basado en la imagen Docker‘hello-world‘.

Podman comprueba el contenedor y las imágenes

Uso básico de Podman

Con esta guía, aprenderás a utilizar podman para gestionar contenedores, imágenes y volúmenes. Aprenderás los comandos básicos de podman para gestionar contenedores, y los comandos que usarás para esta guía son 100% iguales a los comandos de la CLI de Docker.

1. Para encontrar imágenes de contenedores compatibles con el podman, ejecuta el comando podman que aparece a continuación.

podman search nginx

Y verás una lista de imágenes contenedoras del registro de imágenes Docker por defecto y del registro de imágenes Quay.

Elige las imágenes de contenedor ‘nginx’ del registro Docker y descárgalas en tu máquina local mediante el comando podman que aparece a continuación.

podman pull nginx:alpine

Elige el registro de contenedores ‘docker.io‘ y comenzará el proceso de descarga de la imagen de contenedor Nginx.

Podman descarga imágenes de contenedores

2. Para comprobar las imágenes de contenedor disponibles en tu máquina local, ejecuta el comando podman que aparece a continuación.

podman images

Y verás dos imágenes: la de hello-world y la de nginx.

Comprueba las imágenes en la máquina local con podman

3. A continuación, para iniciar y ejecutar un nuevo contenedor basado en la imagen‘nginx:alpine‘, ejecuta el comando podman con la opción‘run‘ como se indica a continuación.

podman run -it --rm -d -p 8080:80 --name web nginx:alpine

Algunas opciones que debes conocer:

  • -i o –interactive – mantener el STDIN del contenedor abierto aunque no esté conectado.
  • -t o–tty – asigna una pseudo-terminal que conecta tu terminal con el STDIN y STDOUT del contenedor.
  • –rm – elimina automáticamente el contenedor cuando se sale de él o se detiene.
  • -d – ejecutar el contenedor en segundo plano, desinstalar el contenedor después de su ejecución.
  • -p 8080:80 – asignar el puerto entre el contenedor y el sistema anfitrión. El puerto ’80’ del contenedor se mapea con el puerto ‘8080’ del sistema anfitrión.
  • –name web – especifica el nuevo nombre del contenedor como ‘web’.
  • nginx:alpine – la imagen que utilizamos es ‘nginx:alpine’.

Verás la cadena y el número aleatorios de tu contenedor en ejecución. Verifica tu contenedor en ejecución utilizando el comando podman que aparece a continuación.

podman ps

Verás la salida que aparece a continuación.

Iniciar y ejecutar el contenedor con podman

El estado del contenedor es‘Up’ y expone el puerto TCP‘8080’ en la máquina anfitriona.

Abre tu navegador web y visita la dirección IP de tu servidor con el puerto ‘8080‘ como se indica a continuación.

http://192.168.1.15:8080/

Y verás la edad predeterminada ‘index.html’ de tu contenedor nginx.

El contenedor web basado en la imagen de Nginx se está ejecutando

4. Además, puedes comprobar los registros de tu contenedor utilizando la opción‘logs’ como se indica a continuación.

podman logs web

Registros Podman checkc

O puedes especificar el último número de líneas del registro del contenedor con la opción ‘–tail‘ como se indica a continuación.

podman logs --tail 10 web

Podman comprueba los últimos registros

5. Ahora puedes detener el contenedor en ejecución utilizando la opción‘stop‘ de podman como se indica a continuación.

podman stop web

Tu contenedor ‘web’ se detendrá. Compruébalo con el siguiente comando.

podman ps
podman ps -a

Y verás una salida similar a la de abajo.

detener el contenedor podman

El contenedor ‘web’ se ha detenido y se ha eliminado automáticamente porque estás utilizando la opción ‘–rm ‘ en tu comando podman.

6. A continuación, aprenderás a utilizar el volumen personalizado para cambiar el ‘index.html’ por defecto en el nuevo contenedor.

Crea un nuevo directorio‘~/data‘ y el archivo ‘index.html’ con el siguiente comando.

mkdir -p ~/data/
nano ~/data/index.html

Copia y pega el script HTML que aparece a continuación.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Welcome to Container Nginx</title>
</head>
<body>
  <h2>Hello from Nginx container - Managed with Podman</h2>
</body>
</html>

Pulsa el botón«Ctrl+x», escribe«y«, y luego pulsa«Enter» para guardar la configuración y salir.

Ahora ejecuta el siguiente comando podman para ejecutar el nuevo contenedor con volumen personalizado.

podman run -it --rm -d -p 8080:80 --name web -v ~/data:/usr/share/nginx/html nginx:alpine

Una opción que debes conocer

  • -v – especifica el volumen para tu contenedor. El directorio‘~/data‘ se montará en el nuevo directorio del contenedor‘/usr/share/nginx/html‘.

Ahora ejecuta el siguiente comando para verificar el contenedor en funcionamiento.

podman ps

Verás el nuevo contenedor‘web‘ en el estado‘Up‘.

Utilizar el volumen personalizado con podman

A continuación, abre tu navegador web y escribe la dirección IP de tu servidor con el puerto‘8080‘.

http://192.168.1.15:8080/

Y verás la página personalizada index.html que has creado en la parte superior, lo que significa que el directorio‘~/data‘ está montado en el contenedor ‘web.

Contenedor web con index.html personalizado proporcionado por el volumen

7. A continuación, puedes entrar en el contenedor en ejecución con la opción‘exec‘ y ejecutando la shell ‘sh’.

Asegúrate de que tu contenedor ‘web‘ se está ejecutando con el siguiente comando.

podman ps

Ahora ejecuta el siguiente comando podman para entrar en el contenedor ‘web’.

podman exec -it web /bin/sh

Comprueba el nombre de host del contenedor ‘web’.

hostname

Comprueba la dirección IP y la tabla de enrutamiento del contenedor ‘web’.

ip a
route -n

Ahora escribe‘exit’ para salir del contenedor ‘web‘.

Podman entra en el contenedor

8. Ahora limpia tu entorno utilizando el siguiente comando.

Detén el contenedor ‘web‘ utilizando el siguiente comando podman.

podman stop web

9. Elimina todos los contenedores con el estado ‘Exited’ utilizando el comando podman que aparece a continuación.

podman rm $(podman ps --filter "status=exited" -q)

Limpiar el contenedor salido con podman

Conclusión

¡Enhorabuena! Has instalado con éxito Podman en el sistema Ubuntu 20.04. Además, has aprendido el uso básico de podman para descargar imágenes de contenedores, ejecutar el contenedor, comprobar el estado del contenedor, los registros y el uso básico de podman para gestionar el volumen. Para el siguiente paso, puedes intentar crear tus imágenes personalizadas con las especificaciones OCI para el empuje/carga de tu aplicación en el registro de contenedores.

También te podría gustar...