Migrar de Docker a Podman puede hacerse sin detener servicios ni perder datos. Podman es un motor de contenedores compatible con OCI que no requiere demonio, ejecuta contenedores en modo rootless y utiliza la misma estructura de imágenes y comandos que Docker. En esta guía práctica aprenderás a realizar la transición de forma gradual y sin interrupciones.

Alias docker=podman: la migración más rápida

La forma más sencilla de empezar es crear un alias para que todos los comandos docker se ejecuten realmente con podman. De esta manera, tus scripts y flujos de trabajo existentes siguen funcionando sin cambios.

alias docker=podman

Para hacerlo permanente, añade la línea a tu ~/.bashrc o ~/.zshrc:

echo "alias docker=podman" >> ~/.bashrc
source ~/.bashrc

Con este alias, comandos como docker ps, docker pull, docker run y docker-compose (si tienes podman-compose instalado) funcionarán sin problemas.

Migración de volúmenes y datos persistentes

Los volúmenes de Docker se almacenan en /var/lib/docker/volumes/. Para migrarlos a Podman, que usa ~/.local/share/containers/storage/volumes/ (en modo rootless), el método más fiable es mediante tar.

# Crear un backup del volumen Docker
docker run --rm -v mi_volumen_docker:/source:ro alpine tar czf /tmp/backup.tar.gz -C /source .

# Crear el volumen en Podman
podman volume create mi_volumen_podman

# Restaurar los datos en el nuevo volumen
podman run --rm -v mi_volumen_podman:/dest alpine tar xzf /tmp/backup.tar.gz -C /dest

Este proceso se puede automatizar para todos los volúmenes de un proyecto y ejecutarlo sin detener los contenedores activos, ya que los datos se copian desde una instantánea de solo lectura.

Socket compatible con Docker

Muchas herramientas y frameworks esperan comunicarse con el socket de Docker. Podman ofrece un socket compatible que puedes activar con systemd o manualmente:

export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock

Si usas Docker Compose (no podman-compose) o herramientas como Portainer, Jenkins o GitLab Runner que se conectan vía socket, configura esta variable de entorno para que apunten al socket de Podman. También puedes habilitar el servicio systemd para que el socket esté disponible permanentemente:

systemctl --user enable podman.socket
systemctl --user start podman.socket

Verificación post-migración

Después de migrar, verifica que todo funcione correctamente:

  • podman ps -a — listar todos los contenedores
  • podman images — ver las imágenes disponibles
  • podman volume ls — confirmar volúmenes migrados
  • docker run hello-world — probar que el alias funciona

Conclusión y recomendación

Migrar de Docker a Podman es un proceso sencillo y seguro que puede realizarse sin tiempo de inactividad. El alias docker=podman permite una transición inmediata, los volúmenes se migran fácilmente con tar, y el socket compatible con Docker garantiza que las herramientas externas sigan funcionando. Recomendamos Podman para entornos de producción por su modelo de seguridad sin demonio, ejecución rootless y compatibilidad total con el ecosistema OCI. Es el motor de contenedores del futuro, disponible hoy.

Infografía Migración Docker a Podman
Infografía: Migración de Docker a Podman paso a paso

Si te sirvió esta guía, compártela con otros sysadmins que estén evaluando migrar a Podman. La transición es más fácil de lo que parece.