Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 9. Construindo imagens de contêineres com Buildah

O comando buildah permite criar imagens de contêineres a partir de um contêiner funcional, um Dockerfile, ou do zero. As imagens resultantes são compatíveis com a OCI, portanto funcionarão em qualquer tempo de funcionamento do contêiner que atenda à Especificação de tempo de funcionamento da OCI (como Docker e CRI-O).

Esta seção descreve como usar o comando buildah para criar e trabalhar com recipientes e imagens de recipientes.

9.1. Entendendo Buildah

Usar Buildah é diferente de construir imagens com o comando docker das seguintes maneiras:

  • No Daemon!: Desvia o daemon Docker! Portanto, não é necessário tempo de funcionamento do contêiner (Docker, CRI-O, ou outro) para usar o Buildah.
  • Base image or scratch: Permite não somente construir uma imagem baseada em outro recipiente, mas também permite que você comece com uma imagem vazia (scratch).
  • Build tools external: Não inclui ferramentas de construção dentro da própria imagem. Como resultado, Buildah:

    • Reduz o tamanho das imagens que você constrói
    • Torna a imagem mais segura por não ter o software utilizado para construir o recipiente (como gcc, make, e yum) dentro da imagem resultante.
    • Cria imagens que requerem menos recursos para transportar as imagens (porque são menores).

A Buildah é capaz de operar sem Docker ou outros tempos de funcionamento de containers, armazenando dados separadamente e incluindo recursos que permitem não apenas construir imagens, mas executar essas imagens também como containers. Por padrão, a Buildah armazena imagens em uma área identificada como containers-storage (/var/lib/contêineres).

Nota

O local de armazenamento de contêineres que o comando buildah usa por padrão é o mesmo local que o motor de contêineres CRI-O usa para armazenar cópias locais de imagens. Assim, as imagens retiradas de um registro por CRI-O ou Buildah, ou comprometidas pelo comando buildah, serão armazenadas na mesma estrutura de diretório. Atualmente, entretanto, CRI-O e Buildah não podem compartilhar contêineres, embora possam compartilhar imagens.

Há mais de uma dúzia de opções para usar com o comando buildah. Algumas das principais atividades que você pode fazer com o comando buildah incluem:

  • Build a container from a Dockerfile: Utilize um Dockerfile para construir uma nova imagem do container (buildah bud).
  • Build a container from another image or scratch: Construir um novo container, começando com uma imagem de base existente (buildah from <imagename>) ou do zero (buildah from scratch)
  • Inspecting a container or image: Ver metadados associados ao recipiente ou à imagem (buildah inspect)
  • Mount a container: Montar o sistema de arquivos raiz de um contêiner para adicionar ou alterar o conteúdo (buildah mount).
  • Create a new container layer: Use o conteúdo atualizado do sistema de arquivos raiz de um contêiner como uma camada do sistema de arquivos para comprometer o conteúdo a uma nova imagem (buildah commit).
  • Unmount a container: Desmontar um recipiente montado (buildah umount).
  • Delete a container or an image: Remover um recipiente (buildah rm) ou uma imagem do recipiente (buildah rmi).

Para mais detalhes sobre Buildah, veja a página de GitHub Buildah. O site GitHub Buildah inclui páginas de homem e software que podem ser mais recentes do que as disponíveis com a versão RHEL. Aqui estão alguns outros artigos sobre Buildah que podem lhe interessar:

9.1.1. Instalando o Buildah

O pacote buildah está disponível com o módulo container-tools no RHEL 8 (yum module install container-tools). Você pode instalar o pacote buildah separadamente, digitando:

# yum -y install buildah

Com o pacote buildah instalado, você pode consultar as páginas de manual incluídas com o pacote buildah para obter detalhes sobre como usá-lo. Para ver as páginas de manual disponíveis e outra documentação, então abra uma página de manual, digite:

# rpm -qd buildah
# man buildah
buildah(1)         General Commands Manual         buildah(1)

NAME
 Buildah - A command line tool that facilitates building OCI container images.
...

As seções seguintes descrevem como usar buildah para obter recipientes, construir um recipiente a partir de um Dockerfile, construir um do zero e gerenciar recipientes de várias maneiras.