Introducción a Podman (alternativa a Docker) en Rocky Linux

Instalar Podman Rocky Linux

Podman es una herramienta nativa de Linux para desplegar aplicaciones usando contenedores e imágenes de contenedores de la Iniciativa de Contenedores Abiertos (OCI). Soporta múltiples formatos de imágenes de contenedores, incluyendo imágenes Docker e imágenes de contenedores OCI. Además, Podman soporta la gestión de pods, grupos de contenedores.

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

Para ejecutar contenedores y gestionar imágenes de contenedores, Podman se basa en libpod y en tiempos de ejecución de contenedores OCI como runc, crun y runv.

Requisitos previos

En esta guía, aprenderá a instalar Podman en el sistema Rocky Linux. Además, aprenderá el uso básico de Podman para gestionar contenedores e imágenes de contenedores.

Antes de empezar, asegúrate de que tienes los siguientes requisitos:

  • Sistema operativo: Rocky Linux 8.4 (Green Obsidian)
  • Privilegios de root: Para instalar nuevos paquetes y editar la configuración del sistema

Ahora vamos a iniciar la instalación de Podman.

Instalando Podman en Rocky Linux

Por defecto, el repositorio appstream de Rocky Linux proporciona paquetes podman.

1. Ejecute el siguiente comando DNF para mostrar información sobre el paquete podman.

sudo dnf info podman

Verá una salida similar a la de abajo.

Last metadata expiration check: 0:07:09 ago on Tue 16 Nov 2021 09:30:27 AM UTC.
Available Packages
Name         : podman
Version      : 3.3.1
Release      : 9.module+el8.5.0+710+4c471e88
Architecture : x86_64
Size         : 12 M
Source       : podman-3.3.1-9.module+el8.5.0+710+4c471e88.src.rpm
Repository   : appstream
Summary      : Manage Pods, Containers and Container Images
URL          : https://podman.io/
License      : ASL 2.0 and GPLv3+
Description  : podman (Pod Manager) is a fully featured container engine that is a simple
             : daemonless tool.  podman provides a Docker-CLI comparable command line that
             : eases the transition from other container engines and allows the management of
             : pods, containers and images.  Simply put: alias docker=podman.
             : Most podman commands can be run as a regular user, without requiring
             : additional privileges.
             :
             : podman uses Buildah(1) internally to create container images.
             : Both tools share image (not container) storage, hence each can use or
             : manipulate images (but not containers) created by the other.
             :
             : Manage Pods, Containers and Container Images
             : podman Simple management tool for pods, containers and images

El repositorio appstream proporciona la versión del paquete Podman ‘3.3.1’.

2. Instala Podman utilizando el comando DNF que aparece a continuación.

sudo dnf install podman

Escriba ‘y’ para confirmar y pulse ‘Enter’ para continuar la instalación.

Instalar Podman Rocky Linux

3. Si la instalación de Podman se completa, verifique utilizando el siguiente comando.

podman version

Verá una salida similar a la de abajo.

Version:      3.3.1
API Version:  3.3.1
Go Version:   go1.16.7
Built:        Wed Nov 10 01:48:06 2021
OS/Arch:      linux/amd64

Configuración importante de Podman

El paquete Podman viene con una configuración por defecto ubicada en el directorio ‘/etc/containers’.

A continuación se muestran algunas configuraciones de Podman que debes conocer.

  • policy.json. Configuración de la política para la firma de imágenes.
  • registries.conf. Lista de registros de imágenes de contenedores disponibles como Docker Registry, RHEL Container image registry y Fedora Container images registry.
  • storage.conf. Configuración del almacenamiento por defecto para Podman. Incluye controladores, ubicación, etc.
  • Directorio registries.d/. Configuración de registros adicionales y firma de imágenes
  • Directorio registries.conf.d/. Configuración adicional para los alias de las imágenes de los contenedores.

Disposición del directorio Podman

Configurar un nuevo usuario

En este paso, creará un nuevo usuario y verificará la instalación de Podman ejecutando la imagen Docker ‘hello-world’.

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

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

Escriba una nueva contraseña fuerte para el usuario ‘johndoe’.

2. A continuación, inicie sesión como usuario ‘johndoe’ utilizando el siguiente comando.

su - johndoe

3. Ahora ejecute el siguiente comando para ejecutar un nuevo contenedor basado en la imagen Docker ‘hello-world’.

podman run hello-world

Verás los mensajes de salida ‘Hello World’, lo que significa que el contenedor se está ejecutando pero ahora ha salido.

? docker.io/library/hello-world:latest
Trying to pull docker.io/library/hello-world:latest...
Getting image source signatures
Copying blob 2db29710123e done
Copying config feb5d9fea6 done
Writing manifest to image destination
Storing signatures

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the «hello-world» image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/


4. Compruebe el estado de los contenedores en su sistema utilizando el siguiente comando Podman

podman ps -a

Verá el contenedor basado en la imagen Docker ‘hello-world’ con el estado actual ‘Exited’.

CONTAINER ID  IMAGE                                 COMMAND     CREATED        STATUS                    PORTS       NAMES
cea9bbfeac4d  docker.io/library/hello-world:latest  /hello      6 minutes ago  Exited (0) 6 minutes ago              recursing_shaw

Usos básicos de Podman

En este paso, aprenderá el uso básico de Podman para gestionar contenedores e imágenes de contenedores.

Buscar imágenes de contenedores

1. Para buscar imágenes de contenedores usando Podman, usa el siguiente comando. En este ejemplo, estamos buscando imágenes de contenedores con el nombre ‘nginx’.

podman search nginx

Verás un montón de imágenes de contenedores de los múltiples registros.

2. Puede limitar los resultados de la búsqueda de cada registro de imágenes de contenedores utilizando la opción ‘–limit n’.

podman search nginx --limit 3

Ahora verá cada registro con 3 resultados de imágenes de contenedores con el nombre ‘nginx’.

INDEX              NAME                                                DESCRIPTION                                      STARS       OFFICIAL    AUTOMATED
fedoraproject.org  registry.fedoraproject.org/f29/nginx                                                                 0
fedoraproject.org  registry.fedoraproject.org/f29/origin-nginx-router                                                   0
redhat.com         registry.access.redhat.com/ubi8/nginx-120           Platform for running nginx 1.20 or building ...  0
redhat.com         registry.access.redhat.com/ubi8/nginx-118           Platform for running nginx 1.18 or building ...  0
redhat.com         registry.access.redhat.com/rhscl/nginx-18-rhel7     Nginx 1.8 server and a reverse proxy server      0
centos.org         registry.centos.org/bamachrn/nginx-header                                                            0
centos.org         registry.centos.org/centos/nginx                                                                     0
centos.org         registry.centos.org/centos/nginx-110-centos7                                                         0
docker.io          docker.io/library/nginx                             Official build of Nginx.                         15839       [OK]
docker.io          docker.io/jwilder/nginx-proxy                       Automated Nginx reverse proxy for docker con...  2096                    [OK]
docker.io          docker.io/nginxinc/nginx-unprivileged               Unprivileged NGINX Dockerfiles                   54

Gestionar imágenes de contenedores

Podman soporta el formato de imágenes OCI y Docker. En esta etapa, gestionará imágenes de contenedores con Podman.

1. Descargue la imagen del contenedor ‘nginx:alpine’ utilizando el siguiente comando.

podman pull nginx:alpine

Selecciona el registro de contenedores que quieras utilizar y pulsa ‘Enter’ para confirmar. Para este ejemplo, utilizaremos el registro de Docker.

? Please select an image:
    registry.fedoraproject.org/nginx:alpine
    registry.access.redhat.com/nginx:alpine
    registry.centos.org/nginx:alpine
  ? docker.io/library/nginx:alpine

El proceso de descarga comenzará.Anuncio

? docker.io/library/nginx:alpine
Trying to pull docker.io/library/nginx:alpine...
Getting image source signatures
Copying blob a4e156412037 done
Copying blob a2402c2da473 done
Copying blob e0bae2ade5ec done
Copying blob 97518928ae5f done
Copying blob 3f3577460f48 done
Copying blob e362c27513c3 done
Copying config b46db85084 done
Writing manifest to image destination
Storing signatures
b46db85084b80a87b94cc930a74105b74763d0175e14f5913ea5b07c312870f8

2. Si el proceso de descarga de la imagen del contenedor se completa, verifique las imágenes del descargador utilizando el siguiente comando.

podman images

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

REPOSITORY                     TAG         IMAGE ID      CREATED      SIZE
docker.io/library/nginx        alpine      b46db85084b8  3 days ago   24.7 MB
docker.io/library/hello-world  latest      feb5d9fea6a5  7 weeks ago  19.9 kB

Ejecutar contenedor con Podman

Después de descargar la imagen del contenedor ‘nginx:alpine’, aprenderás a ejecutar un nuevo contenedor usando Podman.

1. Ejecute el siguiente comando para ejecutar el contenedor basado en la imagen ‘nginx:alpine’.

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

Obtendrás la cadena y el número aleatorios del contenedor.

2. Verifique el contenedor que se ejecuta en su sistema utilizando el siguiente comando.

podman ps

Verá una salida similar a la siguiente.

podman run container

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

3. Ahora abra su navegador web y escriba la dirección IP de Rocky Linux en la barra de direcciones. Para este ejemplo, la máquina Rocky Linux tiene la dirección IP ‘192.168.1.10’.

http://192.168.1.10:8080/

Verás el index.html por defecto del contenedor ‘web’, que está basado en la imagen del contenedor ‘nginx:alpine’.

podman contenedor nginx

Compruebe los registros del contenedor con Podman

Ahora aprenderá el comando Podman para comprobar los registros de los contenedores utilizando la opción ‘logs’.

1. Para comprobar los registros del contenedor, puede utilizar el siguiente comando Podman.

podman logs web

Verás los registros detallados del contenedor ‘web’.

2. Para limitar la salida de registros de contenedores, utilice la opción ‘–tail n’.

podman logs --tail 10 web

A continuación se muestra la salida de registro similar del contenedor ‘web’.

podman check logs

Detención del contenedor con Podman

1. Para detener el contenedor ‘web’, utilice el siguiente comando Podman.

podman stop web

Ahora el contenedor ‘web’ será detenido.

2. Verifique utilizando el siguiente comando.

podman ps
podman ps -a

Verás que el contenedor ‘web’ se borra automáticamente porque estás usando la opción ‘–rm’ cuando ejecutas el contenedor.

podman stop contenedor

Configurar un volumen personalizado con Podman

En este paso, aprenderá a gestionar volúmenes con Podman.

1. Cree un nuevo directorio ‘data’ y el archivo personalizado ‘index.html’. Esto reemplazará el archivo por defecto de Nginx ‘index.html’ en el contenedor Nginx.

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

Copie y pegue 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 Nginx container - Managed with Podman</h2>
</body>
</html>

Guarde el script y salga.

2. A continuación, ejecute el siguiente comando para crear un nuevo contenedor con volumen personalizado.

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

Utilice la opción ‘-v data:/usr/share/nginx/html’ para configurar el volumen personalizado para su nuevo contenedor. El directorio ‘data’ se montará en el directorio del contenedor ‘/usr/share/nginx/html’.

3. Compruebe la ejecución de los contenedores utilizando el comando Podman que aparece a continuación.

podman ps

El nuevo nombre del contenedor ‘web’ está ‘Up’ con el volumen personalizado.

volumen personalizado podman

4. Abra su navegador web y escriba la dirección IP del servidor con el puerto ‘8080’.

http://192.168.1.10:8080/

Ahora verá la página personalizada ‘index.html’ como la siguiente.

Contenedor Ngix volumen personalizado podman

SSH al contenedor en ejecución

En este paso, accederá al shell del contenedor en ejecución.

1. Para iniciar sesión en el contenedor en ejecución, utilice Podman con la opción ‘exec’ como se indica a continuación.

podman exec -it web /bin/sh

2. Después de iniciar la sesión en el contenedor, compruebe el nombre de host del contenedor, la dirección IP y la tabla de enrutamiento.

hostname

ip a
route -n


Ahora escribe ‘exit’ y presiona ‘Enter’ para salir del contenedor.

Podman SSH al contenedor

Limpiar el entorno

En el último paso, se limpiará el entorno.

1. Detenga el contenedor ‘web’ utilizando el siguiente comando.

podman stop web

2. A continuación, elimine todos los contenedores con el estado «Exited» utilizando el siguiente comando podman.

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

Ahora ha completado el uso básico de Podman para gestionar contenedores e imágenes de contenedores.

Conclusión

¡Enhorabuena! Ha instalado con éxito Podman en el sistema Rocky Linux. Además, ha aprendido el uso básico de Podman para gestionar contenedores e imágenes de contenedores.

Para el siguiente paso, puede que te interese crear imágenes de contenedor personalizadas basadas en el formato de imagen Docker o en la especificación de imagen de contenedor OCI.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *