Skip to content

Podman y Podman Compose - capitulo 1 instalación y configuración

Un manual para novatos y expertos sobre Podman y Podman Compose un proyecto opensource bastante potente y eficiente utilizado para la gestión de contenedores

Volver a Página Principal

Ver Codigo en GitLab


🐳 Guía de Instalación: Podman y Podman Compose en Fedora Server ✨

Section titled “🐳 Guía de Instalación: Podman y Podman Compose en Fedora Server ✨”

¡Hola! 👋 ¿Estás listo para sumergirte en el mundo de los contenedores en tu Fedora Server, pero buscando una alternativa potente y segura a Docker? ¡Has llegado al lugar correcto! Podman es un motor de contenedores sin demonio (daemonless) que te permite construir, ejecutar y gestionar contenedores OCI (Open Container Initiative) de forma segura y eficiente. Y con Podman Compose, puedes orquestar múltiples contenedores usando los mismos archivos docker-compose.yml que ya conoces.

En esta guía, te mostraré cómo instalar y configurar Podman y Podman Compose en tu Fedora Server. ¡Vamos a potenciar tu servidor con contenedores! 🚀


1. 🛠️ Instalación de Podman en Fedora Server

Section titled “1. 🛠️ Instalación de Podman en Fedora Server”

Podman es el gestor de contenedores que viene por defecto en Fedora, así que su instalación es muy sencilla.

  1. Es una buena práctica asegurarte de que tu sistema esté completamente actualizado antes de instalar nuevos paquetes.

    Terminal window
    sudo dnf update -y
  2. Podman se instala directamente desde los repositorios oficiales de DNF.

    Terminal window
    sudo dnf install podman -y

    Este comando también instalará las dependencias necesarias.

  3. Para asegurarte de que Podman se ha instalado correctamente y puedes ejecutarlo, verifica su versión:

    Terminal window
    podman --version

    También puedes intentar ejecutar un contenedor de prueba:

    Terminal window
    podman run hello-world

    Si todo va bien, verás un mensaje de bienvenida de “Hello from Docker!” o similar, lo que confirma que Podman está funcionando. ¡Sí, la imagen hello-world de Docker funciona perfectamente en Podman! 😉


Podman Compose es una herramienta basada en Python que te permite definir y ejecutar aplicaciones multi-contenedor usando archivos YAML (compatible con docker-compose.yml). Es el equivalente de docker-compose para Podman.

  1. Podman Compose se instala comúnmente usando pip, el instalador de paquetes de Python.

    Terminal window
    sudo dnf install python3-pip -y
  2. Ahora, instala podman-compose usando pip. Es recomendable instalarlo globalmente para tu sistema o en tu entorno de usuario.

    • Instalación para el usuario actual (recomendado para uso sin root):

      Terminal window
      pip install --user podman-compose

      Si usas esta opción, asegúrate de que tu variable de entorno PATH incluya el directorio donde pip instala los ejecutables de usuario (normalmente ~/.local/bin). Si no, es posible que necesites añadirlo a tu .bashrc o .zshrc:

      Terminal window
      echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
      source ~/.bashrc # O source ~/.zshrc
    • Instalación global (requiere sudo):

      Terminal window
      sudo pip install podman-compose

      Esta opción instalará podman-compose en un directorio accesible para todos los usuarios.

  3. Verifica la Instalación de Podman Compose

    Section titled “Verifica la Instalación de Podman Compose ✅”

    Confirma que podman-compose está disponible y funcionando:

    Terminal window
    podman-compose version

    Deberías ver la versión instalada de podman-compose.


3. 🔑 Configuración y Consideraciones Importantes

Section titled “3. 🔑 Configuración y Consideraciones Importantes”

Aquí te dejo algunas configuraciones y buenas prácticas para usar Podman y Podman Compose en Fedora Server.

  1. Una de las mayores ventajas de Podman es su capacidad para ejecutar contenedores sin necesidad de privilegios de root (modo rootless). Esto mejora significativamente la seguridad.

    • Por defecto, Podman en Fedora está configurado para funcionar en modo rootless para tu usuario. No necesitas hacer nada especial para esto.
    • Los contenedores rootless se ejecutan bajo tu usuario, lo que significa que no tienen acceso de root al sistema host.
    • Volúmenes: Cuando montas volúmenes en modo rootless, los permisos de los archivos en el host son cruciales. Asegúrate de que tu usuario tenga los permisos correctos sobre los directorios que intentas montar en los contenedores.
    • Puertos por debajo de 1024: En modo rootless, no puedes exponer directamente puertos por debajo de 1024 (ej: 80, 443). Si necesitas servir tráfico web en estos puertos, puedes usar Nginx como proxy inverso (consulta nuestra guía de Nginx) o usar la función de port-forwarding de firewalld para redirigir el tráfico.
      • Ejemplo de proxy inverso: Nginx escuchando en el puerto 80/443 y redirigiendo las solicitudes a tu contenedor que escucha en un puerto más alto (ej: 8080).
      • Redirección de puerto con firewalld (avanzado):
        Terminal window
        # Redirige tráfico del puerto 80 (público) al 8080 (donde escucha tu contenedor rootless)
        sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
        sudo firewall-cmd --reload
        Luego, en tu podman-compose.yml, mapearías el puerto 8080:8080 (o el que sea que tu contenedor esté usando internamente).
  2. Podman maneja sus propias redes para los contenedores. Cuando usas podman-compose, automáticamente creará una red para tus servicios.

    • Puedes listar las redes existentes con:
      Terminal window
      podman network ls
    • Para crear una red personalizada antes de usar podman-compose (útil si quieres una red compartida entre varios compose o contenedores sueltos):
      Terminal window
      podman network create my_custom_network
      Luego, en tu podman-compose.yml, harías referencia a ella en la sección networks.
  3. Si quieres que tus contenedores se inicien automáticamente al arrancar el servidor (y no solo cuando los lanzas manualmente), Podman puede generar unidades de systemd.

    • Para un servicio definido en podman-compose, primero levanta los servicios:
      Terminal window
      podman-compose up -d
    • Luego, puedes generar y habilitar unidades systemd para tus contenedores (esto es más común para contenedores individuales o si podman-compose no está directamente gestionado por systemd):
      Terminal window
      podman generate systemd --name <nombre_del_contenedor>
      # Esto generará un archivo .service, ej: container-myweb.service
      # Mueve el archivo generado a ~/.config/systemd/user/
      mv container-<nombre_del_contenedor>.service ~/.config/systemd/user/
      systemctl --user daemon-reload
      systemctl --user enable container-<nombre_del_contenedor>.service
      systemctl --user start container-<nombre_del_contenedor>.service
      Para un conjunto de servicios de podman-compose, es más complejo y a menudo se prefiere ejecutar podman-compose up -d manualmente o con un script. Hay proyectos y scripts que facilitan la integración de podman-compose con systemd si es una necesidad crítica para ti.
  4. Los volúmenes de Podman (tanto los nombrados como los bind mounts) son persistentes por diseño.

    • Volúmenes nombrados: Se crean y gestionan por Podman. Son la forma preferida de almacenar datos persistentes para bases de datos, etc.
      Terminal window
      podman volume create my_data_volume
    • Bind Mounts: Mapean un directorio de tu sistema host directamente al contenedor.
      /app/data
      Asegúrate de que los permisos y contextos de SELinux (chcon, semanage fcontext) sean correctos para los directorios que montas como bind mounts.

5. 📚 Referencias y Recursos Adicionales

Section titled “5. 📚 Referencias y Recursos Adicionales”

¡Felicidades! 🎉 Has instalado y configurado Podman y Podman Compose en tu Fedora Server. Ahora tienes todas las herramientas para construir, ejecutar y orquestar tus aplicaciones en contenedores de forma segura y eficiente. ¡A experimentar y a desplegar! 🐳