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
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.
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.
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.
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‘.
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.
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.
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.
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.
4. Además, puedes comprobar los registros de tu contenedor utilizando la opción‘logs’ como se indica a continuación.
podman logs web
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
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.
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‘.
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‘.
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‘.
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)
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.