Podman es una herramienta poderosa y segura para crear y gestionar contenedores, que ofrece una alternativa a Docker con una serie de beneficios y características únicas.
Algunas de las características clave de Podman son:
- No requiere un demonio (servicio en segundo plano) para funcionar, lo que lo hace más ligero y seguro que Docker.
- Utiliza el mismo formato de archivo de configuración que Docker (dockerfile), lo que facilita la migración de proyectos existentes.
- Soporta la mayoría de las características de Docker, incluyendo la creación de contenedores, la gestión de imágenes y la configuración de redes.
- Permite la ejecución de contenedores en modo rootless (sin necesidad de permisos de root), lo que mejora la seguridad.
Nota: El siguiente procedimiento ha sido ejecutado en Debian 12
1. Instalar dependencias
$ sudo apt-get install gcc \
git \
iptables \
libassuan-dev \
libc6-dev \
libdevmapper-dev \
libglib2.0-dev \
libgpgme-dev \
libgpg-error-dev \
libprotobuf-dev \
libprotobuf-c-dev \
libselinux1-dev \
libsystemd-dev \
make \
netavark \
passt \
pkg-config \
runc \
uidmap \
libseccomp-dev
Instalar golang
Instale la versión 1.24.2 siguiendo los pasos ¿Cómo instalar el lenguaje de programación Go?
Compilar conmon
$ git clone https://github.com/containers/conmon
$ cd conmon
$ export GOCACHE="$(mktemp -d)"
$ make
$ sudo make podman
$ cd
Compilar/Instalar Podman
$ git clone https://github.com/containers/podman/
$ cd podman
$ git checkout v5.4.2
$ make PREFIX=/usr
$ sudo env PATH=$PATH make install PREFIX=/usr
$ cd
Comprobar versión
$ podman -v
podman version 5.4.2
Crear los ficheros registries.conf
y policy.conf
$ mkdir -p $HOME/.config/containers && \
$ curl -L -o $HOME/.config/containers/registries.json https://raw.githubusercontent.com/containers/image/main/registries.conf
$ curl -L -o $HOME/.config/containers/policy.json https://raw.githubusercontent.com/containers/image/main/default-policy.json
Ficheros temporales de Podman
$ sudo cp $HOME/podman/contrib/tmpfile/podman.conf /etc/tmpfiles.d/ -v
Modificar la unidad systemd podman-restart.service
Debe agregar la siguiente línea a la unidad podman-restart.service
ExecStartPre=/bin/sleep 20
El contenido de la unidad debe quedar así
$ cat /usr/lib/systemd/user/podman-restart.service
[Unit]
Description=Podman Start All Containers With Restart Policy Set To Always
Documentation=man:podman-start(1)
StartLimitIntervalSec=0
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
RemainAfterExit=true
Environment=LOGGING="--log-level=info"
ExecStartPre=/bin/sleep 20
ExecStart=/usr/bin/podman $LOGGING start --all --filter restart-policy=always
ExecStop=/usr/bin/podman $LOGGING stop --all --filter restart-policy=always
[Install]
WantedBy=default.target
Habilite los servicios
$ systemctl --user enable --now podman.socket podman-restart.service
Lingering
Permite ejecutar servicios systemd en la sesión de usuario sin necesidad de loguearse.
$ loginctl enable-linger $USER
$ loginctl list-users