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 *