En este apartado vamos a crear un contenedor especificando el comando que debe ejecutar a partir de la imagen ubuntu. En este caso vamos a descargar primero la imagen del registro público Docker Hub, y a continuación crearemos el contenedor.

Para descargar la imagen ejecutamos:

$ sudo podman pull ubuntu
Resolved "ubuntu" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/ubuntu:latest...
Getting image source signatures
Copying blob bccd10f490ab done   | 
Copying config ca2b0f2696 done   | 
Writing manifest to image destination
ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459

Podemos utilizar el nombre corto de la imagen ubuntu porque tenemos creado un alias en el fichero /etc/containers/registries.conf.d/000-shortnames.conf. A continuación, creamos y ejecutamos un nuevo contenedor indicando el comando que va a ejecutar:

$ sudo podman run ubuntu echo 'Hello world'
Hello world

Comprobamos que el contenedor ha ejecutado el comando que hemos indicado y se ha parado:

$ sudo podman ps -a
CONTAINER ID  IMAGE                            COMMAND           CREATED        STATUS                    PORTS       NAMES
6e8e46cee350  docker.io/library/ubuntu:latest  echo Hello world  2 seconds ago  Exited (0) 2 seconds ago              eloquent_hodgkin

Los contenedores que hemos creado se nombran de manera aleatoria. Podemos cambiar el nombre de cualquier contenedor usando el comando podman rename:

$ sudo podman rename eloquent_hodgkin contenedor_ubuntu

Y comprobamos que el nombre ha cambiado:

$ sudo podman ps -a
CONTAINER ID  IMAGE                            COMMAND           CREATED             STATUS                         PORTS       NAMES
6e8e46cee350  docker.io/library/ubuntu:latest  echo Hello world  About a minute ago  Exited (0) About a minute ago              contenedor_ubuntu

¿Qué ocurre cuando creamos un contenedor?

Para terminar podemos ver las distintas etapas por las que pasa la creación de un contenedor ejecutando podman events. Para ello en una terminal vamos a crear un contenedor rootless y en otra terminal ejecutamos podman events

En el primer terminal:

$ podman run ubuntu echo 'Hello world' 
Resolved "ubuntu" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/ubuntu:latest...
Getting image source signatures
Copying blob bccd10f490ab done   | 
Copying config ca2b0f2696 done   | 
Writing manifest to image destination
Hello world

Como es de esperar el usuario sin privilegios que crea el contenedor rootless no tiene guardada en su registro local la imagen docker.io/library/ubuntu:latest por lo que se la baja de nuevo.

Es importante tener en cuenta que cada usuario tiene su propio conjunto de imágenes descargadas, es decir:

  • Si creamos contenedores rootful con el usuario root, las imágenes se guardarán en el directorio /var/lib/containers/storage.
  • Si creamos contenedores rootless con el usuario usuario, las imágenes se guardarán en el directorio /home/usuario/.local/share/containers/storage.

En el segundo terminal (donde hemos ejecutado podman events) veremos las operaciones que se han dio produciendo:

2024-04-14 19:24:20.592277325 +0000 UTC image pull ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459 ubuntu
2024-04-14 19:24:20.956225765 +0000 UTC container create 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)
2024-04-14 19:24:21.502238172 +0000 UTC container init 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)
2024-04-14 19:24:21.544584186 +0000 UTC container start 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)
2024-04-14 19:24:21.602046252 +0000 UTC container attach 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)
2024-04-14 19:24:21.603927126 +0000 UTC container died 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)
2024-04-14 19:24:23.146601679 +0000 UTC container cleanup 80c2732ff6dbb93a9e95d0a218176a14bd9db537f200de92d3a192ba2b018785 (image=docker.io/library/ubuntu:latest, name=eloquent_noether, org.opencontainers.image.ref.name=ubuntu, org.opencontainers.image.version=22.04)

Actualizado: