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 copy
ybuildah config
para 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
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