Estos son los materiales que he utilizado para la preparacion de la charla:
https://docs.google.com/presentation/d/1Ozfobpi2DiTgzFEXBjBwoiIeoqDSHloUNOgcT_DBqnE/edit?usp=sharing
- Administrador de Pods
- Soporte rootless desde el primer día
- Sin daemon, pero con un modelo fork-exec
- El modelo fork-exec se adapta al subsistema de auditoría
- Enfoque en la seguridad
- Excelente integración con los sistemas Linux modernos
- Perfecto para sysadmins y desarrolladores
- Podman admite contenedores rootless desde el primer día
- Implementado a través de espacios de nombres de usuario (User Namespaces)
- Corre como root dentro del contenedor, sin ser root fuera de él
- Puede ejecutarse como cualquier usuario dentro de los contenedores
- Incluso funciona en entornos HPC muy restringidos (con un solo mapeo posible)
podman build -t pd-nginx .podman run -it -d -p 8081:80 pd-nginxpodman pod create --name wordpress_full -p 8080:80Agregar contenedores al pod
podman run -d --pod wordpress_full \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_ROOT_PASSWORD=root \
mysql:9.3.0podman run -d --pod wordpress_full \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=root \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_DB_HOST=127.0.0.1 \
wordpress:php8.3-apachepodman pod top wordpress_fullpodman generate kube wordpress_full > wordpress_full.yamlpodman play kube wordpress_full.yamlcreen un venv de python puden usar el venv de python en mi caso usar uv
uv init
uv venv
source .venv/bin/activate
uv add podman-compose
pip install podman-compose --break-system-packages
Creamos un archivo compose.yaml con el siguiente contenido
services:
db:
image: mysql:9.3.0
environment:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_HOST: '%'
restart: always
ports:
- "3306:3306"
wordpress:
image: wordpress:php8.3-apache
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DB_NAME: wordpress
ports:
- "8080:80"
depends_on:
- db
restart: alwayspodman-compose up -dpodman search busyboxpodman pull busybox
? Please select an image:
▸ docker.io/library/busybox:latest
ghrc.io/busybox:latest
quay.io/busybox:latestpodman-compose up
3abe7c83716cd6efc0a622f46b833f0f28beba6451219fe85e27c96d75a2e8f9
? Please select an image:
▸ docker.io/library/mysql:9.3.0
ghrc.io/mysql:9.3.0
quay.io/mysql:9.3.0mkdir -p ~/.config/containers/echo "unqualified-search-registries= ['docker.io', 'ghrc.io','quay.io']" > ~/.config/containers/registries.confServicio de registro de contenedores de Red Hat.
quay.io/my-repository/nginx
Servicio de registro de contenedores de GitHub
ghcr.io/my-repository/nginx
Servicio de registro de contenedores de Docker
docker.io/my-repository/nginx
Servicio de registro de contenedores de AWS
public.ecr.aws/docker/library/nginx
Crear pod
podman pod create --name=al-pod7418c6b91e942a9a6a591acd4c24b7c0c926137a3f7555075cad6d75b87b44c5
Agregar contenedores al pod
podman create --pod=al-pod --name=container-a -t alpine topc9ebacd988c0e8ed3ef87dcd7d135dcf2b8e85a6d569ec57a922603f72eb3078
podman create --pod=al-pod --name=container-b -t alpine top11408199d2bb4230ff8855415d8bc272b1f09052dad9faf84bd2f8d3e0d1c0f2
Crear carpeta para los archivos del systemd del usuario
mkdir -p $HOME/.config/systemd/user
cd $HOME/.config/systemd/user
$ podman generate systemd --new --files --name al-pod
/home/pdrok/.config/systemd/user/pod-al-pod.service
/home/pdrok/.config/systemd/user/container-container-b.service
/home/pdrok/.config/systemd/user/container-container-a.service
Recargar el daemon
systemctl --user daemon-reloadIniciar el servicio del pod y asegurar que este funcionado
systemctl --user start pod-al-pod.service
systemctl --user is-active pod-al-pod.service
activepodman pod psPOD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
89ecef529fb1 al-pod Running 33 seconds ago 2071bea27142 3podman container psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2071bea27142 localhost/podman-pause:4.3.1-0 44 seconds ago Up 45 seconds ago 89ecef529fb1-infra
c5c9605c2f42 docker.io/library/alpine:latest top 44 seconds ago Up 44 seconds ago container-a
8eb130545303 docker.io/library/alpine:latest top 44 seconds ago Up 44 seconds ago container-b
- Servidor Minecraft con podman https://gist.github.com/pdrok/8a5d073298bd76fe8abc51a6a2df2e36
https://podman.io/docs/installation
https://www.redhat.com/en/blog/podman-run-pods-systemd-services
https://mkdev.me/posts/dockerless-part-1-which-tools-to-replace-docker-with-and-why
https://www.youtube.com/watch?v=ZgXpWKgQclc
https://www.youtube.com/watch?v=AGkM2jGT61Y
https://www.youtube.com/watch?v=jeTKgAEyhsA
https://danishpraka.sh/posts/build-a-container-image-from-scratch/