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
Síguenos con el tutorial
Section titled “Síguenos con el tutorial”- En QuéPasalinux MySQL - Introducción a MySQL con Docker un vídeo práctico sobre MySQL y Docker
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.
-
Actualiza tu Sistema ⬆️
Section titled “Actualiza tu Sistema ⬆️”Es una buena práctica asegurarte de que tu sistema esté completamente actualizado antes de instalar nuevos paquetes.
Terminal window sudo dnf update -y -
Instala Podman 📦
Section titled “Instala Podman 📦”Podman se instala directamente desde los repositorios oficiales de DNF.
Terminal window sudo dnf install podman -yEste comando también instalará las dependencias necesarias.
-
Verifica la Instalación de Podman ✅
Section titled “Verifica la Instalación de Podman ✅”Para asegurarte de que Podman se ha instalado correctamente y puedes ejecutarlo, verifica su versión:
Terminal window podman --versionTambién puedes intentar ejecutar un contenedor de prueba:
Terminal window podman run hello-worldSi 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! 😉
2. ⚙️ Instalación de Podman Compose
Section titled “2. ⚙️ Instalación de Podman Compose”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.
-
Instala
Section titled “Instala pip (si no lo tienes) 🐍”pip
(si no lo tienes) 🐍Podman Compose se instala comúnmente usando
pip
, el instalador de paquetes de Python.Terminal window sudo dnf install python3-pip -y -
Instala Podman Compose 🚀
Section titled “Instala Podman Compose 🚀”Ahora, instala
podman-compose
usandopip
. 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-composeSi usas esta opción, asegúrate de que tu variable de entorno
PATH
incluya el directorio dondepip
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"' >> ~/.bashrcsource ~/.bashrc # O source ~/.zshrc -
Instalación global (requiere
sudo
):Terminal window sudo pip install podman-composeEsta opción instalará
podman-compose
en un directorio accesible para todos los usuarios.
-
-
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 versionDeberí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.
-
Modo Sin Privilegios (Rootless Mode) 🔒
Section titled “Modo Sin Privilegios (Rootless Mode) 🔒”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
defirewalld
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):Luego, en tuTerminal 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 --permanentsudo firewall-cmd --reloadpodman-compose.yml
, mapearías el puerto8080:8080
(o el que sea que tu contenedor esté usando internamente).
-
Sistema de Redes (
Section titled “Sistema de Redes (podman network) 🌐”podman network
) 🌐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 varioscompose
o contenedores sueltos):Luego, en tuTerminal window podman network create my_custom_networkpodman-compose.yml
, harías referencia a ella en la secciónnetworks
.
- Puedes listar las redes existentes con:
-
Section titled “systemd y Contenedores Persistentes 🔄”systemd
y Contenedores Persistentes 🔄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 sipodman-compose
no está directamente gestionado porsystemd
):Para un conjunto de servicios deTerminal 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-reloadsystemctl --user enable container-<nombre_del_contenedor>.servicesystemctl --user start container-<nombre_del_contenedor>.servicepodman-compose
, es más complejo y a menudo se prefiere ejecutarpodman-compose up -d
manualmente o con un script. Hay proyectos y scripts que facilitan la integración depodman-compose
consystemd
si es una necesidad crítica para ti.
- Para un servicio definido en
-
Almacenamiento (Volúmenes) 💾
Section titled “Almacenamiento (Volúmenes) 💾”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.
Asegúrate de que los permisos y contextos de SELinux (
/app/data chcon
,semanage fcontext
) sean correctos para los directorios que montas como bind mounts.
- Volúmenes nombrados: Se crean y gestionan por Podman. Son la forma preferida de almacenar datos persistentes para bases de datos, etc.
5. 📚 Referencias y Recursos Adicionales
Section titled “5. 📚 Referencias y Recursos Adicionales”- Documentación Oficial de Podman: podman.io/docs/ (¡Tu fuente definitiva!)
- Repositorio de Podman Compose: github.com/containers/podman-compose
- Artículos de Fedora Magazine sobre Podman: Una gran fuente de tutoriales y noticias.
- SELinux y Contenedores: access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/using_container_tools/managing-container-security_using-container-tools (aunque para RHEL, aplica a Fedora)
¡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! 🐳