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.

También te podría gustar...