9.4. Modificación de un contenedor para crear una nueva imagen con Buildah
Hay varias maneras de modificar un contenedor existente con el comando buildah y confirmar esos cambios en una nueva imagen de contenedor:
- Montar un contenedor y copiar archivos en él
-
Utilice
buildah copyybuildah configpara modificar un contenedor
Una vez que haya modificado el contenedor, utilice buildah commit para confirmar los cambios en una nueva imagen.
9.4.1. Utilizando buildah mount para modificar un contenedor Copiar enlaceEnlace copiado en el portapapeles!
Después de obtener una imagen con buildah from, puede utilizar esa imagen como base para una nueva imagen. El siguiente texto muestra cómo crear una nueva imagen montando un contenedor de trabajo, añadiendo archivos a ese contenedor, y luego confirmando los cambios en una nueva imagen.
Escriba lo siguiente para ver el contenedor de trabajo que utilizó anteriormente:
# buildah containers
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
dc8f21af4a47 * 1456eedf8101 registry.redhat.io/ubi8/ubi:latest
ubi-working-container
6d1ffccb557d * ab230ac5aba3 docker.io/library/myecho:latest
myecho-working-container
Monte la imagen del contenedor y establezca el punto de montaje en una variable ($mymount) para que sea más fácil de manejar:
# mymount=$(buildah mount myecho-working-container)
# echo $mymount
/var/lib/containers/storage/devicemapper/mnt/176c273fe28c23e5319805a2c48559305a57a706cc7ae7bec7da4cd79edd3c02/rootfs
Añade contenido al script creado anteriormente en el contenedor montado:
# echo 'echo \ "Incluso lo modificamos.\N" >> $mymount/usr/local/bin/myecho
Para confirmar el contenido que has añadido para crear una nueva imagen (llamada myecho), escribe lo siguiente:
# buildah commit myecho-working-container containers-storage:myecho2
Para comprobar que la nueva imagen incluye sus cambios, cree un contenedor de trabajo y ejecútelo:
# buildah images
IMAGE ID IMAGE NAME CREATED AT SIZE
a7e06d3cd0e2 docker.io/library/myecho2:latest
Oct 12, 2017 15:15 3.144 KB
# buildah from docker.io/library/myecho2:latest
myecho2-working-container
# podman run docker.io/library/myecho2
This container works!
We even modified it.
Puede ver que el nuevo comando echo añadido al script muestra el texto adicional.
Cuando haya terminado, puede desmontar el contenedor:
# buildah umount myecho-working-container