Gestión de Pods
La gestión de los Pods la realizaremos utilizando el comando podman pod
.
Creación de un Pod
Para crear un Pod, usamos el comando podman pod create
, por ejemplo para crear un Pod llamado pod1
, ejecutamos:
$ podman pod create --name pod1
Podemos visualizar el Pod que hemos creado:
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
45d3c5f01747 pod1 Created 8 seconds ago 41f153d29f02 1
Como vemos esta compuesto por un contenedor, que será el contenedor infra. Si queremos mostrar los nombres de los contenedores de los que está formado, usamos el parámetro --ctr-names
:
$ podman pod ps --ctr-names
POD ID NAME STATUS CREATED INFRA ID NAMES
45d3c5f01747 pod1 Created 32 seconds ago 41f153d29f02 45d3c5f01747-infra
Añadir contenedores a un Pod
Para añadir un contenedor a un Pod, a la hora de crearlo debemos indicar el nombre del Pod:
$ podman run -dt --pod pod1 --name principal alpine:latest top
Al iniciar el contenedor principal, el Pod se ha iniciado:
$ podman pod ps
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
45d3c5f01747 pod1 Running 8 minutes ago 41f153d29f02 2
Comprobamos que tenemos dos contenedores en el Pod. Podemos visualizar los contenedores con la información del Pod al que pertenecen, ejecutando:
$ podman ps --pod
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME
41f153d29f02 localhost/podman-pause:4.9.4-1711445992 9 minutes ago Up 3 minutes 45d3c5f01747-infra 45d3c5f01747 pod1
dde078d7cf4e docker.io/library/alpine:latest top 3 minutes ago Up 3 minutes principal 45d3c5f01747 pod1
Ciclo de vida de un Pod
Aunque podemos controlar el ciclo de vida independientemente de cada contenedor, al operar sobre el Pod estaremos actuando sobre todos los contenedores. Por ejemplo, para pausar y continuar los contenedores de un Pod:
$ podman pod pause pod1
$ podman pod unpause pod1
Para parar e iniciar todos los contenedores:
$ podman pod stop pod1
$ podman pod start pod1
Para reiniciar los contenedores de un Pod:
$ podman pod restart pod1
Obteniendo información de un Pod
Podemos obtener la información detallada de un Pod ejecutando:
$ podman pod inspect pod1
Si tenemos un sólo contenedor principal en el Pod podemos ver los logs de salida, ejecutando:
$ podman pod logs pod1
Sin embargo, si añadimos un segundo contenedor:
$ podman run -dt --pod pod1 --name secundario alpine:latest top
$ podman ps --pod
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES POD ID PODNAME
41f153d29f02 localhost/podman-pause:4.9.4-1711445992 19 minutes ago Up 13 minutes 45d3c5f01747-infra 45d3c5f01747 pod1
dde078d7cf4e docker.io/library/alpine:latest top 13 minutes ago Up 13 minutes primario 45d3c5f01747 pod1
b220cb7dfdf1 docker.io/library/alpine:latest top About a minute ago Up About a minute secundario 45d3c5f01747 pod1
Para obtener los logs hay que especificar el contenedor con el parámetro -c
:
$ podman pod logs -c secundario pod1
Finalmente para ver los procesos que se están ejecutando en los distintos contenedores:
$ podman pod top pod1
USER PID PPID %CPU ELAPSED TTY TIME COMMAND
0 1 0 0.000 14m54.557309601s ? 0s /catatonit -P
root 1 0 0.000 14m54.559080387s pts/0 0s top
root 1 0 0.000 2m55.562434639s pts/0 0s top
Eliminar los Pods
Al borrar un Pod, se eliminaran todos los contenedores que forman parte de él. Si queremos borrar un Pod debe estar parado:
$ podman pod stop pod1
$ podman pod rm pod1
Si queremos forzar la eliminación de un Pod aunque este en ejecución:
$ podman pod rm -f pod1
Si queremos borrar todos los Pods parados y en ejecución:
$ podman pod rm --all
$ podman pod rm -f --all
Por último para eliminar los Pods que están parados:
$ podman pod prune
WARNING! This will remove all stopped/exited pods..
Are you sure you want to continue? [y/N]