Ejecución simple de contenedores
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)