Guía para principiantes para instalar y utilizar Podman en AlmaLinux 9

Podman es una herramienta nativa de Linux para desplegar aplicaciones utilizando contenedores e imágenes de contenedor de la Open Container Initiative (OCI). Es compatible con varios formatos de imágenes de contenedores, incluidas las imágenes Docker y las imágenes de contenedores OCI. Además, Podman permite gestionar pods y grupos de contenedores.

Podman es una herramienta sin demonio, que se ejecuta como una única línea de comandos binaria sin servicio. Proporciona una línea de comandos similar a Docker, puedes utilizar un alias como ‘alias docker=podman’.

En esta guía, te mostraremos cómo instalar y utilizar Podman como sustituto de Docker Engine en un servidor AlmaLinux 9. Aprenderás algunos usos básicos de Podman para gestionar aplicaciones en contenedores. Al completar esta guía, tendrás una mejor comprensión del uso de Podman como orquestación de contenedores para tu desarrollo local.

Requisitos previos

Para comenzar con esta guía, debes tener lo siguiente:

  • Un servidor AlmaLinux 9 – Este ejemplo utiliza un servidor con el nombre de host‘AlmaLinux9‘.
  • Un usuario no root con privilegios de administrador sudo/root.

Instalación de Podman

Podman es un demonio menos y de código abierto de orquestación de contenedores para el desarrollo rápido. Podman es una aplicación nativa de Linux y proporciona una interfaz de línea de comandos similar a Docker.

Con Podman, puedes encontrar, ejecutar, compartir y desplegar aplicaciones utilizando contenedores OCI (Open Containers Initiative) e imágenes de contenedores.

En AlmaLinux, Podman está disponible por defecto en el repositorio AppStream, puedes instalarlo utilizando el gestor de paquetes DNF.

Ejecuta el siguiente comando dnf para instalar Podman en tu servidor AlmaLinux.

sudo dnf install podman

Introduce y cuando se te solicite, y pulsa ENTER.

instalar podman

Como Podman no tiene demonio, puedes ejecutarlo sin iniciar ningún demonio.

Ejecuta el siguiente comando para comprobar la versión de Podman e información detallada sobre tu instalación.

podman version

A continuación se muestra una salida de la versión actual de Podman durante este escrito:

comprobación de la versión de podman

Además, también puedes verificar los detalles de la instalación de Podman utilizando el siguiente comando.

podman info

Ejecutar Podman como usuario no root

En esta sección, configurarás Podman para un usuario no root. Crearás un nuevo usuario y te asegurarás de que el nuevo usuario no root pueda ejecutar y ejecutar contenedores con Podman.

Ejecuta el siguiente comando para crear un nuevo usuario llamado«alice» y configura su contraseña. Introduce una nueva contraseña cuando se te pida y repite la operación.

sudo useradd -m -s /bin/bash alice
sudo passwd alice

Ahora, añade el nuevo usuario‘alice‘ al grupo‘wheel‘. Esto permitirá al nuevo usuario ejecutar‘sudo‘ y convertirse en root.

sudo usermod -aG wheel alice

A continuación, ejecuta el siguiente comando para habilitar lingering para el usuario «alice». Esto permite al usuario ‘alice’ ejecutar el proceso contenedor durante un largo periodo de tiempo, incluso cuando el usuario cierre la sesión, el proceso seguirá ejecutándose.

sudo loginctl enable-linger alice

A continuación, inicia sesión como el nuevo usuario ‘alice‘ utilizando el comando que aparece a continuación.

su - alice

crear nuevo usuario

Ejecuta el siguiente comando‘podman‘ para ejecutar un nuevo contenedor con la imagen‘hello-world‘.

podman run hello-world

Si tiene éxito, deberías obtener una salida como ésta:

contenedor en funcionamiento hola-mundo

Por último, ejecuta el siguiente comando ‘podman’ para verificar la lista de contenedores en ejecución y salidos.

podman ps -a

Si la configuración es correcta, deberías ver el contenedor con la imagen base ‘hello-world‘ con el estado‘Exited‘.

comprobar la lista de contenedores

Encontrar imágenes de contenedor

Por defecto, Podman recuperará imágenes de contenedores de varios registros de imágenes, como el registro de imágenes de Redhat, quay.io y también DockerHub. Puedes añadir más registros de imágenes de contenedores a la configuración ‘/etc/containers/registries.conf’.

Este ejemplo utilizará DockerHub como registro de contenedores, así que empecemos.

Ejecuta el siguiente comando para buscar nuevas imágenes de contenedor que contengan‘httpd‘.

podman search httpd

A continuación se muestra la salida que deberías recibir en tu terminal:

contenedor de búsqueda

También puedes limitar la salida utilizando la opción‘–limit‘ de esta forma.

podman search httpd --limit 3

Esto mostrará sólo las tres primeras imágenes contenedor de cada registro de imágenes contenedor.

búsqueda de imágenes top 3

Por último, también puedes utilizar la opción«–filtro» como ésta.

podman search httpd --filter=is-official

Esto te mostrará sólo las imágenes contenedor oficiales.

salida del filtro

Descarga de imágenes

Después de encontrar las imágenes de contenedor, el siguiente paso es descargar las imágenes de contenedor de los registros.

Ejecuta el siguiente comando para descargar la imagen‘httpd‘ con la etiqueta‘alpine‘.

podman pull httpd:alpine

Selecciona el registro de imágenes que quieras utilizar. En este ejemplo utilizaremos DockerHub.

seleccionar registro de contenedores

Una vez seleccionada la fuente, comenzará el proceso de descarga.

tirar imágenes

Una vez finalizado, ejecuta el siguiente comando para comprobar las imágenes disponibles en tu servidor AlmaLinux.

podman images

En este punto, si tiene éxito, deberías obtener dos imágenes contenedoras, la imagen‘hello-world‘ de quay.io y‘httpd‘ del DockerHub.

imágenes de la lista de control

Inspeccionar imágenes

Inspeccionar imágenes es una potente forma de obtener información detallada sobre cómo se iniciará el contenedor. En Podman y Docker, puedes inspeccionar imágenes con la opción ‘inspeccionar’.

Ejecuta el siguiente comando para obtener información detallada sobre la imagen‘httpd:alpine‘.

podman inspect docker.io/library/httpd:alpine

Esto te mostrará información detallada sobre las imágenes, como la fecha de creación, el tamaño, el directorio de trabajo por defecto, el comando de inicio, el puerto expuesto y mucho más.

imagen detallada

También puedes especificar qué parte quieres comprobar utilizando el parámetro adicional así.

podman inspect --format "size: {{.Size}}" docker.io/library/httpd:alpine
podman inspect --format "ports: {{.Config.ExposedPorts}}" docker.io/library/httpd:alpine
podman inspect --format "workdir: {{.Config.WorkingDir}}" docker.io/library/httpd:alpine

Esto te mostrará el tamaño de la imagen, el puerto expuesto por defecto y el directorio de trabajo por defecto.

inspeccionando la imagen

Ejecutar el Contenedor

En esta sección, aprenderás a ejecutar el contenedor con Podman.

Introduce el siguiente comando para ejecutar un nuevo contenedor llamado ‘httpd’, exponer el puerto 8080 en la máquina anfitriona y utilizar la imagen‘httpd:alpine‘. Además, el parámetro‘–rm‘, eliminará automáticamente el contenedor al detenerlo.

podman run -it --rm -d -p 8080:80 --name httpd docker.io/library/httpd:alpine

Si tiene éxito, deberías obtener la cadena aleatoria y el número del nuevo id del contenedor.

Comprueba el contenedor en ejecución utilizando el siguiente comando. Deberías obtener el contenedor ‘httpd‘ con el estado‘Up‘ y utilizar el puerto 8080 en la máquina anfitriona.

podman ps

contenedor en funcionamiento

A continuación, puedes comprobar el contenedor ‘httpd’ utilizando el siguiente comando curl. Asegúrate de sustituir la dirección IP del ejemplo siguiente por la dirección IP de tu servidor.

curl http://192.168.5.20:8080/

Si tienes éxito, deberías obtener una salida como ésta:

contenedor de acceso

Además, también puedes acceder al contenedor ‘httpd’ a través del navegador web. Abre tu navegador web y visita las direcciones IP del servidor seguidas del puerto 8080 del contenedor (es decir: http://192.168.5.20:8080/).

Si tienes éxito, deberías obtener la página predeterminada index.html del contenedor ‘httpd‘ de esta forma:

acceso al contenedor

Comprobando los Registros del Contenedor

Con el contenedor ‘httpd’ en funcionamiento, ahora vas a comprobar los logs del contenedor. Saber esto es útil para depurar tus aplicaciones.

Para mostrar todos los registros del contenedor ‘httpd‘, ejecuta el siguiente comando.

podman logs httpd

Este es un ejemplo de los registros del contenedor ‘httpd’.

comprobación del contenedor de troncos

A continuación, puedes reducir la salida de registros utilizando el parámetro ‘–tail ‘ de la siguiente manera.

podman logs --tail 20 httpd

En este ejemplo, el parámetro ‘ tail 20‘ te mostrará las últimas 20 líneas de registros del contenedor ‘httpd‘.

Detener el Contenedor

Ahora, si quieres parar el contenedor, simplemente ejecuta el comando `podmanstop`.

Ejecuta el siguiente comando para detener el contenedor ‘httpd‘.

podman stop httpd

Una vez detenido el contenedor ‘httpd‘, ejecuta el siguiente comando para comprobar la lista de contenedores disponibles en tu sistema.

podman ps
podman ps -a

El contenedor ‘httpd‘ se elimina automáticamente después de detenerlo. Esto se debe a que ejecutas el contenedor con el parámetro‘–rm’.

contenedor de parada

Ejecutar un contenedor con un volumen personalizado

En este ejemplo, ejecutarás un nuevo contenedor con volumen personalizado. Esto montará el directorio local de la máquina anfitriona en el contenedor.

Crea un nuevo directorio ‘data‘ dentro del directorio personal del usuario alice. A continuación, crea un nuevo archivo‘index.html dentro del directoriodata’ utilizando el editor nano.

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

Inserta el siguiente script HTML.

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

Guarda y cierra el archivo.

Ahora, ejecuta el siguiente comando para ejecutar un nuevo contenedor ‘httpd’ con el volumen personalizado del directoriodata’, que se montará en el directorio‘/usr/local/apache2/htdocs‘ del contenedor.

podman run --privileged=true -it --rm -d -p 8080:80 --name httpd -v ~/data:/usr/local/apache2/htdocs docker.io/library/httpd:alpine

Además, este contenedor se ejecuta con un parámetro adicional‘–privileged=true‘. Esto es para hacer pruebas, y aún así el contenedor se ejecutará como usuario‘alice‘ y no como usuario root. Obtén más información sobre banderas privilegiadas en Podman.

A continuación, ejecuta el siguiente comando para comprobar el contenedor en ejecución en tu sistema.

podman ps

Si se ejecuta correctamente, deberías ver el nuevo contenedor‘httpd‘ con el estado‘Up‘ y el puerto 8080 expuesto en la máquina anfitriona.

ejecutar volúmenes personalizados de contenedor

Ejecuta el siguiente comando curl para verificar el nuevo contenedor ‘httpd‘.

curl http://192.168.5.21:8080/

Deberías obtener una salida del script index.html que creaste anteriormente.

acceso al contenedor

Desde el navegador web en http://192.168.5.21:8080/, se te debería mostrar la página personalizada como ésta:

contenedor de acceso

Iniciar sesión en el contenedor

Con el contenedor ‘httpd‘ en ejecución, puedes acceder al contenedor mediante shell utilizando el comando‘podman exec‘.

Accede al contenedor ‘httpd‘ utilizando el siguiente comando. Esto ejecutará el shell‘/bin/sh‘ en el contenedor ‘httpd‘ y lo adjuntará a tu sesión actual.

podman exec -it httpd /bin/sh

Una vez conectado, deberías estar en el directorio ‘WorkingDir‘. En su ejemplo, el WorkingDir por defecto es el directorio ‘/usr/local/apache2‘.

Ahora ejecuta el siguiente comando en el contenedor‘httpd‘. Comprueba el usuario actual, la dirección IP local del contenedor y la puerta de enlace por defecto del contenedor.

id

ip a
route -n

Puede que tengas una salida con una dirección IP y una puerta de enlace diferentes, pero debería ser similar a ésta:

acceso al contenedor

Ejecutar y Gestionar Pod

En Podman, puedes crear y ejecutar Pod. Pod es una envoltura para contenedores, lo que significa que varios contenedores pueden ejecutarse en un único Pod. Como en Kubernetes, Pod es la entidad más pequeña donde se ejecuta tu aplicación.

Con Podman, puedes crear y ejecutar Pod, incluso sin Kubernetes.

Ejecuta el siguiente comando para crear un nuevo pod httpdTest con la imagen‘httpd:alpine‘ y exponer el puerto 9090 en la máquina anfitriona.

podman run -dt --pod new:httpdTest -p 9090:80 docker.io/library/httpd:alpine

Si tiene éxito, deberías obtener la cadena aleatoria y el número de Pod id.

Ahora ejecuta el siguiente comando para comprobar el Pod en ejecución en tu sistema.

podman pod ls

Deberías ver el Pod‘httpdTest‘ con el estado‘En ejecución‘ y 2 contenedores.

crear vaina

Ahora puedes utilizar la opción‘inspeccionar‘ en el pod así.

podman pod inspect httpdTest

Deberías obtener información detallada sobre el pod httpdTest.

podman inspeccionar pod

También puedes comprobar el número de contenedores que se ejecutan dentro de los pods, incluidos los nombres de los contenedores, utilizando el siguiente comando.

podman pod inspect --format="containers: {{.NumContainers}}" httpdTest
podman pod inspect --format "{{.Containers}}" httpdTest

Obtendrás una salida como ésta:

vaina de inspección

Por último, ejecuta el siguiente comando para acceder al pod httpdTest, que se ejecuta en el puerto 9090 de la máquina anfitriona. Si tienes éxito, deberías obtener los contenedores de la página index.html por defecto que se ejecutan en el pod httpdTest.

curl http://192.168.5.21:9090/

Conclusión

¡Enhorabuena! Ya has instalado Podman en AlmaLinux 9. También has aprendido el uso básico de Podman para gestionar imágenes y contenedores. Además, también has aprendido a crear y ejecutar Pod con Podman.

También te podría gustar...