Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 5. Funcionamento de Skopeo e Buildah em um contêiner

Com Skopeo, você pode inspecionar imagens em um registro remoto sem ter que baixar a imagem inteira com todas as suas camadas. Você também pode usar o Skopeo para copiar imagens, assinar imagens, sincronizar imagens, e converter imagens através de diferentes formatos e compressões de camadas.

O Buildah facilita a construção de imagens de contêineres OCI. Com o Buildah, você pode criar um container funcional, seja do zero ou usando uma imagem como ponto de partida. Você pode criar uma imagem a partir de um contêiner funcional ou através das instruções em um Dockerfile. Você pode montar e desmontar o sistema de arquivos raiz de um contêiner funcional.

Razões para executar Buildah e Skopeo em um contêiner:

  • Skopeo: Você pode executar um sistema CI/CD dentro da Kubernetes ou usar o OpenShift para construir suas imagens de contêineres, e possivelmente distribuir essas imagens em diferentes registros de contêineres. Para integrar o Skopeo em um fluxo de trabalho Kubernetes, você precisa executá-lo em um contêiner.
  • Buildah: Você quer construir imagens OCI/container dentro de um sistema Kubernetes ou OpenShift CI/CD que estão constantemente construindo imagens. Anteriormente, as pessoas usavam uma tomada Docker para se conectar ao motor do contêiner e executar um comando docker build. Isto era o equivalente a dar acesso root ao sistema sem exigir uma senha que não é segura. Por este motivo, a Red Hat recomenda o uso do Buildah em um contêiner.
  • Both: Você está rodando um sistema operacional antigo no host, mas quer rodar a última versão do Skopeo, Buildah, ou ambos. A solução é rodar o Buildah em um container. Por exemplo, isto é útil para rodar a última versão do Skopeo, Buildah, ou ambas fornecidas no RHEL 8 em um host de containers RHEL 7 que não tem acesso às versões mais novas nativamente.
  • Both: Uma restrição comum em ambientes HPC é que não é permitido aos usuários não-rootores instalar pacotes no host. Quando você executa Skopeo, Buildah, ou ambos em um container, você pode executar estas tarefas específicas como um usuário não-root.

5.1. Funcionamento do Skopeo em um contêiner

Este procedimento demonstra como inspecionar a imagem de um contêiner remoto usando o Skopeo. Rodar o Skopeo em um contêiner significa que o sistema de arquivos raiz do contêiner é isolado do sistema de arquivos raiz do hospedeiro. Para compartilhar ou copiar arquivos entre o host e o container, você tem que montar arquivos e diretórios.

Procedimento

  1. Entrar no registro.redhat.io

    $ podman login registry.redhat.io
    Username: myuser@mycompany.com
    Password: ***********
    Login Succeeded!
  2. Obtenha a imagem do recipiente registry.redhat.io/rhel8/skopeo:

    $ podman pull registry.redhat.io/rhel8/skopeo
  3. Inspecione uma imagem de contêiner remoto registry.access.redhat.com/ubi8/ubi usando Skopeo:

    $ podman run --rm registry.redhat.io/rhel8/skopeo skopeo inspect docker://registry.access.redhat.com/ubi8/ubi
    {
        "Name": "registry.access.redhat.com/ubi8/ubi",
        ...
        "Labels": {
            "architecture": "x86_64",
            ...
            "name": "ubi8",
            ...
            "summary": "Provides the latest release of Red Hat Universal Base Image 8.",
            "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8/images/8.2-347",
            ...
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Layers": [
        ...
        ],
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "container=oci"
        ]
    }

    A opção --rm remove a imagem registry.redhat.io/rhel8/skopeo após a saída do contêiner.

Recursos adicionais