Buildah nos permite también crear imágenes a partir de un fichero Containerfile o Dockerfile y un contexto de manera similar a como lo hacemos con podman build.

Puedes encontrar los ficheros que vamos a utilizar en el directorio modulo9/build del Repositorio con el código de los ejemplos

En este ejemplo vamos a crear una imagen a partir del siguiente Containerfile:

FROM registry.access.redhat.com/ubi8/python-38:latest
WORKDIR /app
COPY app .
RUN python -m pip install -r requirements.txt
USER 1001 
EXPOSE 5000
CMD ["python3", "app.py"]
  • La imagen registry.access.redhat.com/ubi8/python-38:latest es una imagen base de Python construida por Red Hat que permite la ejecución de la aplicación con un usuario no privilegiado.
  • Con el parámetro USER indicamos el usuario sin privilegios que va a ejecutar el servidor web.

Para crear una nueva imagen usamos el comando buildah build indicando el nombre con el parámetro -t:

$ buildah build -t josedom24/app-python

Por defecto Buildah busca un fichero Containerfile y el contexto en el directorio donde se está ejecutando. Si queremos indicar un fichero y un contexto en concreto lo tendremos que indicar:

$ buildah build -t josedom24/app-python -f Containerfile .

Una vez construida la imagen podremos ver que se ha creado, ejecutando:

$ buildah images
REPOSITORY                                  TAG           IMAGE ID       CREATED             SIZE
localhost/josedom24/app-python              latest        a7951b30c32a   28 seconds ago      906 MB

Y podemos crear un contenedor, en este caso creamos un contenedor rootless que nos ofrece un servidor web ejecutado con un usuario sin privilegios:

$ podman run -d -p 8000:5000 --name python1 josedom24/app-python:latest

$ podman top python1
USER        PID         PPID        %CPU        ELAPSED           TTY         TIME        COMMAND
default     1           0           0.000       29m58.442890345s  ?           0s          python3 app.py 
...

Actualizado: