Red Hat Training
A Red Hat training course is available for RHEL 8
9.4. Modificando um recipiente para criar uma nova imagem com Buildah
Há várias maneiras de modificar um contêiner existente com o comando buildah e comprometer essas mudanças para uma nova imagem do contêiner:
- Montar um recipiente e copiar arquivos para ele
-
Use
buildah copyebuildah configpara modificar um recipiente
Uma vez modificado o recipiente, use buildah commit para comprometer as mudanças em uma nova imagem.
9.4.1. Usando buildah mount para modificar um recipiente
Depois de obter uma imagem com buildah from, você pode usar essa imagem como base para uma nova imagem. O texto a seguir mostra como criar uma nova imagem montando um recipiente de trabalho, adicionando arquivos a esse recipiente e, em seguida, submetendo as alterações a uma nova imagem.
Digite o seguinte para visualizar o recipiente de trabalho que você usou 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-containerMonte a imagem do recipiente e defina o ponto de montagem para uma variável ($mymount) para facilitar o manuseio:
# mymount=$(buildah mount myecho-working-container) # echo $mymount /var/lib/containers/storage/devicemapper/mnt/176c273fe28c23e5319805a2c48559305a57a706cc7ae7bec7da4cd79edd3c02/rootfs
Adicione conteúdo ao roteiro criado anteriormente no recipiente montado:
# echo 'echo \\i1}>> $mymount/usr/local/bin/myecho
Para comprometer o conteúdo que você adicionou para criar uma nova imagem (chamada myecho), digite o seguinte
# buildah commitdah myecho-working-container containers-containers-storage:myecho2
Para verificar se a nova imagem inclui suas mudanças, crie um recipiente de trabalho e execute-o:
# 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.
Você pode ver que o novo comando echo adicionado ao script exibe o texto adicional.
Quando terminar, você pode desmontar o recipiente:
# constrói umount myecho-working-container