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 copy e buildah config para 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-container

Monte 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