Podman (el POD MANager) es un motor de contenedor compatible con OCI, desarrollado por Red Hat como reemplazo directo de Docker. Se utiliza para administrar y ejecutar contenedores, imágenes y volúmenes a través de una interfaz de línea de comandos. Tanto Docker como Podman son software similar. La única diferencia es que Podman no requiere un demonio para ejecutar contenedores, mientras que Docker necesita el demonio Docker Engine. Podman usa la biblioteca libpod para administrar un ecosistema de contenedores completo.
En este tutorial, le mostraremos cómo instalar y usar Podman en Debian 11.
Requisitos
- Un servidor que ejecuta Debian 11.
- Se configura una contraseña raíz en el servidor.
Instalar Podman
El paquete Podman está incluido en el repositorio predeterminado de Debian 11. Puede instalarlo simplemente ejecutando el siguiente comando:
apt-get install podman -y
Una vez que Podman esté instalado, verifique la versión de Podman usando el siguiente comando:
podman --version
Debería ver la versión de Podman en el siguiente resultado:
podman version 3.0.1
Puede obtener más información de Podman usando el siguiente comando:
podman info
Obtendrá el siguiente resultado:
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 usa el archivo de configuración del registro /etc/containers/registries.conf para extraer todas las imágenes de contenedores de Internet. Por lo tanto, deberá editarlo y definir el registro:
nano /etc/containers/registries.conf
Agregue 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 = [ ]
Guarde y cierre el archivo cuando haya terminado.
Cómo usar Podman
En esta sección, le mostraremos cómo usar el comando Podman para extraer imágenes y ejecutar un contenedor.
Para obtener una imagen de Debian, ejecute el siguiente comando:
podman pull debian
Obtendrá el siguiente resultado:
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
Puede ver su imagen descargada usando el siguiente comando:
podman images
Obtendrá el siguiente resultado:
REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/debian latest 827e5611389a 11 days ago 129 MB
A continuación, ejecute un contenedor desde la imagen de Debian con el siguiente comando:
podman run -dit debian:latest
Obtendrá el siguiente resultado:
f85c4df5ab787912c984ec820571da7b95b32736ef94ba691d9ab5019c5b5103
Puede enumerar todos los contenedores en ejecución con el siguiente comando:
podman ps
Debería ver el siguiente resultado:
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, ejecute el comando Podman especificando el ID del contenedor:
podman inspect f85c4df5ab78
Obtendrá el siguiente resultado:
[ { "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 verificar el registro del contenedor, ejecute el siguiente comando:
podman logs f85c4df5ab78
Si desea conectarse al contenedor en ejecución, ejecute el siguiente comando:
podman exec -it f85c4df5ab78 /bin/bash
Accederá al caparazón del contenedor como se muestra a continuación:
[email protected]:/#
Para salir del shell del contenedor, ejecute el siguiente comando:
[email protected]:/# exit
Cómo detener y retirar un contenedor
También puede usar Podman para iniciar, detener y eliminar un contenedor.
Para detener un contenedor en ejecución, ejecute el siguiente comando:
podman stop f85c4df5ab78
Ahora puede verificar el contenedor detenido usando el siguiente comando:
podman ps -a
Debería ver el siguiente resultado:
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, ejecute el siguiente comando:
podman rm f85c4df5ab78
Si desea detener el último contenedor, ejecute el siguiente comando:
podman stop --latest
Para iniciar el último contenedor, ejecute el siguiente comando:
podman start --latest
Para eliminar el contenedor más reciente, ejecute el siguiente comando:
podman rm --latest
Para eliminar todos los contenedores en ejecución, ejecute el siguiente comando:
podman rm -f `podman ps -aq`
Para eliminar una imagen, ejecute el siguiente comando:
podman rmi 827e5611389a
Obtendrá el siguiente resultado:
Untagged: docker.io/library/debian:latest Deleted: 827e5611389abf13dad1057e92f163b771febc0bcdb19fa2d634a7eb0641e0cc
Conclusión
En la publicación anterior, explicamos cómo instalar y usar Podman en Debian 11. Ahora puede usar Podman como reemplazo de Docker para ejecutar y administrar los contenedores.