Cómo instalar Podman como alternativa a Docker en Debian 11
Podman (el Gestor de PODs) es un motor de contenedores compatible con OCI, desarrollado por Red Hat como sustituto de Docker. Se utiliza para gestionar y ejecutar contenedores, imágenes y volúmenes a través de una interfaz de línea de comandos. Tanto Docker como Podman son programas similares. La única diferencia es que Podman no necesita un demonio para ejecutar contenedores, mientras que Docker necesita el demonio Docker Engine. Podman utiliza la biblioteca libpod para gestionar todo un ecosistema de contenedores.
En este tutorial, te mostraremos cómo instalar y utilizar Podman en Debian 11.
Requisitos previos
- Un servidor que ejecute Debian 11.
- Una contraseña de root configurada en el servidor.
Instalar Podman
El paquete Podman está incluido en el repositorio por defecto de Debian 11. Puedes instalarlo simplemente ejecutando el siguiente comando:
apt-get install podman -y
Una vez instalado Podman, comprueba la versión de Podman con el comando siguiente:
podman --version
Deberías ver la versión de Podman en la siguiente salida:
podman version 3.0.1
Puedes obtener más información de Podman utilizando el siguiente comando:
podman info
Obtendrás la siguiente salida:
host: arch: amd64 buildahVersion: 1.19.6 cgroupManager: systemd cgroupVersion: v2 conmon: package: 'conmon: /usr/bin/conmon' path: /usr/bin/conmon version: 'conmon version 2.0.25, commit: unknown' cpus: 2 distribution: distribution: debian version: "11" eventLogger: journald hostname: debian11 idMappings: gidmap: null uidmap: null kernel: 5.10.0-8-amd64 linkmode: dynamic memFree: 3365183488 memTotal: 4122267648 ociRuntime: name: crun package: 'crun: /usr/bin/crun' path: /usr/bin/crun version: |- crun version 0.17 commit: 0e9229ae34caaebcb86f1fde18de3acaf18c6d9a spec: 1.0.0 +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL os: linux remoteSocket: exists: true path: /run/podman/podman.sock security: apparmorEnabled: true capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT rootless: false seccompEnabled: true selinuxEnabled: false
Añadir Registro OCI
Podman utiliza el archivo de configuración del registro /etc/containers/registries.conf para obtener todas las imágenes de contenedores de Internet. Así que tendrás que editarlo y definir el registro:
nano /etc/containers/registries.conf
Añade las siguientes líneas al final del archivo:
[registries.insecure] registries = [ ] # If you need to block pull access from a registry, uncomment the section below # and add the registries fully-qualified name. # Docker only [registries.block] registries = [ ]
Guarda y cierra el archivo cuando hayas terminado.
Cómo utilizar Podman
En esta sección, te mostraremos cómo utilizar el comando Podman para extraer imágenes y ejecutar un contenedor.
Para extraer una imagen de Debian, ejecuta el siguiente comando:
podman pull debian
Obtendrás la siguiente salida:
Resolved "debian" as an alias (/etc/containers/registries.conf.d/shortnames.conf) Trying to pull docker.io/library/debian:latest... Getting image source signatures Copying blob 647acf3d48c2 done Copying config 827e561138 done Writing manifest to image destination Storing signatures 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
Puedes ver tu imagen descargada utilizando el siguiente comando:
podman images
Obtendrás el siguiente resultado:
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 827e5611389a 11 days ago 129 MB
A continuación, ejecuta un contenedor desde la imagen Debian utilizando el siguiente comando:
podman run -dit debian:latest
Obtendrás el siguiente resultado
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103
Puedes listar todos los contenedores en ejecución utilizando el siguiente comando:
podman ps
Obtendrás la siguiente salida
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 13 seconds ago Up 13 seconds ago competent_cori
Para inspeccionar el contenedor en ejecución, ejecuta el comando Podman especificando el ID del contenedor:
podman inspect f85c4df5ab78
Obtendrás la siguiente salida:
[ { "Id": "f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103", "Created": "2021-11-28T07:00:12.795302341Z", "Path": "bash", "Args": [ "bash" ], "State": { "OciVersion": "1.0.2-dev", "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 6881, "ConmonPid": 6878, "ExitCode": 0, "Error": "", "StartedAt": "2021-11-28T07:00:13.551753552Z", "FinishedAt": "0001-01-01T00:00:00Z", "Healthcheck": { "Status": "", "FailingStreak": 0, "Log": null } },
Para comprobar el registro del contenedor, ejecuta el siguiente comando:
podman logs f85c4df5ab78
Si quieres conectarte al contenedor en ejecución, ejecuta el siguiente comando:
podman exec -it f85c4df5ab78 /bin/bash
Accederás al shell del contenedor como se muestra a continuación:
root@f85c4df5ab78:/#
Para salir del shell del contenedor, ejecuta el siguiente comando:
root@f85c4df5ab78:/# exit
Cómo Detener y Eliminar un Contenedor
También puedes utilizar Podman para iniciar, detener y eliminar un contenedor.
Para detener un contenedor en ejecución, ejecuta el siguiente comando:
podman stop f85c4df5ab78
Ahora puedes verificar el contenedor detenido utilizando el siguiente comando:
podman ps -a
Deberías ver la siguiente salida:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f85c4df5ab78 docker.io/library/debian:latest bash 3 minutes ago Exited (137) 10 seconds ago competent_cori
Para eliminar un contenedor detenido, ejecuta el siguiente comando:
podman rm f85c4df5ab78
Si quieres detener el último contenedor, ejecuta el siguiente comando:
podman stop --latest
Para iniciar el último contenedor, ejecuta el siguiente comando:
podman start --latest
Para eliminar el último contenedor, ejecuta el comando siguiente:
podman rm --latest
Para eliminar todos los contenedores en ejecución, ejecuta el comando siguiente:
podman rm -f `podman ps -aq`
Para eliminar una imagen, ejecuta el comando siguiente:
podman rmi 827e5611389a
Obtendrás la siguiente salida:
Untagged: docker.io/library/debian:latest Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
Primeros pasos con Podman
Una guía detallada sobre cómo utilizar Podman para crear imágenes, volúmenes y contenedores está disponible aquí: Primeros pasos con Podman: Gestionar Imágenes, Contenedores y Volúmenes
Conclusión
En el post anterior hemos explicado cómo instalar y utilizar Podman en Debian 11. Ahora puedes utilizar Podman como sustituto de Docker para ejecutar y gestionar los contenedores.