Cómo instalar y utilizar Podman en CentOS 8
Podman es una herramienta gratuita, de código abierto y nativa de Linux que se utiliza para ejecutar, construir, compartir y desplegar aplicaciones utilizando contenedores. Te permite gestionar contenedores e imágenes, volúmenes montados en esos contenedores. Podman es un motor de contenedorización sin demonio, por lo que está ganando popularidad rápidamente entre los desarrolladores como sustituto de Docker.
En este post, te mostraremos cómo instalar y utilizar Podman en CentOS 8.
Requisitos previos
- Un servidor que ejecute CentOS 8.
- Una contraseña de root configurada en el servidor.
Instalar Podman
En primer lugar, necesitarás instalar el repositorio EPEL en tu sistema. Puedes instalarlo utilizando el siguiente comando:
dnf install epel-release -y
Tras instalar el repo EPEL, ejecuta el siguiente comando para instalar Podman:
dnf install podman -y
Una vez instalado Podman, verifica la versión instalada de Podman con el siguiente comando:
podman --version
Deberías ver la siguiente salida:
podman version 3.0.2-dev
Para obtener información detallada, ejecuta el siguiente comando:
podman info
Deberías ver la siguiente salida:
host: arch: amd64 buildahVersion: 1.19.8 cgroupManager: systemd cgroupVersion: v1 conmon: package: conmon-2.0.26-3.module_el8.4.0+830+8027e1c4.x86_64 path: /usr/bin/conmon version: 'conmon version 2.0.26, commit: 9dea73702793340168deaa5a0d21ca5ce1fcb5d7' cpus: 2 distribution: distribution: '"centos"' version: "8" eventLogger: file hostname: centos8 idMappings: gidmap: null uidmap: null kernel: 4.18.0-193.6.3.el8_2.x86_64 linkmode: dynamic memFree: 479723520 memTotal: 4130037760 ociRuntime: name: runc package: runc-1.0.0-73.rc93.module_el8.4.0+830+8027e1c4.x86_64 path: /usr/bin/runc version: |- runc version spec: 1.0.2-dev go: go1.15.7 libseccomp: 2.4.1 os: linux
Buscar y descargar una imagen con Podman
Para encontrar una imagen de Debian, ejecuta el siguiente comando:
podman search debian
Deberías ver todas las imágenes Debian disponibles en el siguiente resultado:
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/library/debian Debian is a Linux distribution that's compos... 3894 [OK] docker.io docker.io/smartentry/debian debian with smartentry 6 [OK] docker.io docker.io/library/ubuntu Ubuntu is a Debian-based Linux operating sys... 12423 [OK] docker.io docker.io/samueldebruyn/debian-git a minimal docker container with debian and g... 22 [OK] docker.io docker.io/i386/debian Debian is a Linux distribution that's compos... 14 docker.io docker.io/jdub/debian-sources-resource Concourse CI resource to check for updated D... 0 [OK] docker.io docker.io/itscaro/debian-ssh debian:jessie 28 [OK] docker.io docker.io/eboraas/debian Debian base images, for all currently-availa... 8 [OK] docker.io docker.io/amd64/debian Debian is a Linux distribution that's compos... 6 docker.io docker.io/arm32v7/debian Debian is a Linux distribution that's compos... 72 docker.io docker.io/dockershelf/debian Repository for docker images of Debian. Test... 1 [OK] docker.io docker.io/ppc64le/debian Debian is a Linux distribution that's compos... 4 docker.io docker.io/arm64v8/debian Debian is a Linux distribution that's compos... 26 docker.io docker.io/spritsail/debian-builder A Docker image based on debian:slim ideal fo... 1 [OK] docker.io docker.io/arm32v5/debian Debian is a Linux distribution that's compos... 2 docker.io docker.io/vpgrp/debian Docker images of Debian. 2 docker.io docker.io/multiarch/debian-debootstrap multiarch ports of debian-debootstrap 13 docker.io docker.io/1and1internet/debian-9-nginx-php-7.2-wordpress-4 debian-9-nginx-php-7.2-wordpress-4 0 [OK] docker.io docker.io/mdoerges/debian-buster-nginx Debian Buster with Nginx 0 docker.io docker.io/fleshgrinder/debian Debian base images for production and multis... 0 [OK] docker.io docker.io/s390x/debian Debian is a Linux distribution that's compos... 2 docker.io docker.io/vicamo/debian Debian docker images for all versions/archit... 3 docker.io docker.io/konstruktoid/debian Debian base image 0 [OK] docker.io docker.io/casept/debian-amd64 A debian image built from scratch. Mostly fo... 0 docker.io docker.io/vergissberlin/debian-development Docker debian image to use for development, ... 6 [OK]
A continuación, descarga la imagen de Debian utilizando el siguiente comando:
podman pull debian
Deberías obtener el siguiente resultado:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf) Trying to pull docker.io/library/debian:latest... Getting image source signatures Copying blob 0bc3020d05f1 done Copying config 7a4951775d done Writing manifest to image destination Storing signatures 7a4951775d157843b47250a2a5cc7b561d2abe0b29ae6f19737a04635302eacf
A continuación, verifica la imagen descargada utilizando el siguiente comando:
podman images
Deberías obtener el siguiente resultado:
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 7a4951775d15 33 hours ago 119 MB
Ejecutar un contenedor con Podman
Ahora puedes lanzar un contenedor desde la imagen de Debian utilizando el siguiente comando:
podman run -dit --name debian-container debian
Deberías obtener el siguiente resultado:
5fb79d2ff9748be9474977852db989d4de489546526683e840c501249823a4bf
También puedes verificar el contenedor en ejecución utilizando el siguiente comando:
podman ps
Deberías ver la siguiente salida:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5fb79d2ff974 docker.io/library/debian:latest bash 29 seconds ago Up 28 seconds ago debian-container
Para conectar el contenedor en ejecución, ejecuta el siguiente comando:
podman attach debian-container
Una vez conectado, deberías obtener la siguiente salida:
root@5fb79d2ff974:/#
También puedes ejecutar cualquier comando dentro del contenedor en ejecución:
root@5fb79d2ff974:/# apt-get update
Para salir del contenedor Debian, ejecuta el siguiente comando:
root@5fb79d2ff974:/# exit
Para comprobar el registro del contenedor en ejecución, ejecuta el siguiente comando:
podman logs -f debian-container
Para detener el contenedor en ejecución, ejecuta el siguiente comando:
podman stop debian-container
Para eliminar el contenedor detenido, ejecuta el siguiente comando:
podman rm debian-container
Gestionar Pods con Podman
En esta sección, te mostraremos cómo gestionar pods utilizando Podman.
Para crear un nuevo pod llamado webserver, ejecuta el siguiente comando:
podman pod create --name webserver
Deberías obtener la siguiente salida:
9cc9b2bdcfe1b774129f2d5b50a4b52c746a0f8917780ae7f2c786fa7767cd19
Para listar todos los pods, ejecuta el siguiente comando:
podman pod list
Deberías obtener el siguiente resultado:
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 9cc9b2bdcfe1 webserver Created 21 seconds ago 3a0c7750fed9 1
Para comprobar un contenedor en ejecución dentro de tu pod, ejecuta el siguiente comando:
podman ps -a --pod
Deberías obtener el siguiente resultado
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 3a0c7750fed9 registry.access.redhat.com/ubi8/pause:latest 38 seconds ago Created 9cc9b2bdcfe1-infra 9cc9b2bdcfe1 webserver
Para añadir un nuevo contenedor CentOS a un pod, ejecuta el comando siguiente:
podman run -dt --pod webserver centos:latest top
Deberías obtener el siguiente resultado:
Resolved "centos" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf) Trying to pull quay.io/centos/centos:latest... Getting image source signatures Copying blob 7a0437f04f83 done Copying config 300e315adb done Writing manifest to image destination Storing signatures fcd9a724097759c29330bd57e557eab9778b3d6736695ebf9afedfbd9c0db5e3
Ahora, verifica el contenedor añadido utilizando el siguiente comando:
podman ps -a --pod
Deberías obtener el siguiente resultado:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME 3a0c7750fed9 registry.access.redhat.com/ubi8/pause:latest About a minute ago Up 16 seconds ago 9cc9b2bdcfe1-infra 9cc9b2bdcfe1 webserver fcd9a7240977 quay.io/centos/centos:latest top 17 seconds ago Up 16 seconds ago recursing_goldwasser 9cc9b2bdcfe1 webserver
Conclusión
En la guía anterior, has aprendido a instalar y utilizar Podman para gestionar contenedores en CentOS 8. Podman es muy similar a Docker y un gran sustituto para facilitarte el trabajo.