Un contenedor es un objeto que nos permite ejecutar una aplicación de manera aislada. Conceptualmente es similar a una máquina virtual pero mucho más ligera.
Por ejemplo, podemos ejecutar en local una aplicación como el editor de swagger sin necesidad de hacer una instalación tradicional
Para manejar los contenedores (crearlos, descargarlos, ejecutarlos…) necesitamos una herramienta como docker o podman
Instalación de podman
En linux lo podemos instalar con el gestor de paquetes de nuestra distribución.
En windows es un poco más complicado porque los contenedores utilizan características del kernel de linux y es necesario crear una máquina virtual para correr linux:
- Descargamos podman
- Dejamos marcada la opción de instalar WSL

- Una vez terminada la instalación se reiniciará el equipo
- Abrimos powershell y tecleamos:
- podman machine init -> descargará una versión mínima de Fedora
- podman machine start -> arranca la máquina virtual que nos permitirá ejecutar podman
Ejecución de un contenedor
Sólo tenemos que teclear el siguiente comando desde una consola:
podman run \
-d \
-p 8081:8080 \
--rm \
--name swagger-editor swaggerapi/swagger-editor
Nos preguntará desde dónde queremos descargar la aplicación:

Elegimos docker.io y cuando termine la descarga accedemos a la url http://localhost:8081:

Un poco de teoría
¿Qué acabamos de hacer? Veamos lo que significa el comando que acabamos de ejecutar:
podman run \
-d \
-p 8081:8080 \
--rm \
--name swagger-editor \
swaggerapi/swagger-editor
- run: ejecuta un contenedor a partir de una imágen, si la imágen no existe en la máquina local la descarga. La relación que existe entre una imágen y un contenedor es la misma que existe entre una clase y una instancia: la imágen es el ‘molde’ a partir del cual podemos crear varios contenedores
- -d: crea el contendor en segundo plano. Si no usamos esta opción la consola se quedará bloqueada hasta que detengamos el contenedor
- -p 8081:8080: mapea hacia el puerto local 8081 el puerto 8080 del contenedor
- –rm: borra (remove) el contenedor una vez detenido
- –name swagger-editor: crea el contenedor con el nombre swagger-editor
- swaggerapi/swagger-editor: descarga la imágen con este nombre desde docker.io. Las imágenes están almacenadas en registros y esta la hemos descargado desde Docker Hub. Otro registros públicos son Quay o el del proyecto Fedora
Podemos ver la imágen que hemos descargado con el comando:
podman images

A partir de esta imagen podemos crear otros contenedores:
podman run \
-d \
-p 8091:8080 \
--rm \
--name otro-swagger-editor \
swaggerapi/swagger-editor
Al que podemos acceder desde la url http://localhost:8091
Podemos ver los contenedores que tenemos levantados con el comando: podman ps

Y podemos pararlos con:
podman stop otro-swagger-editor
podman stop swagger-editor
Si ahora hacemos:
podman ps
Veremos que ya no hay contedores activos. Pero si lanzamos el comando:
podman images
Veremos que la imagen sigue existiendo
:warning: Si usas podman en windows tendrás que iniciar la VM de podman cada vez que arranques el sistema mediante el comando:
podman machine start