Red Hat Training

A Red Hat training course is available for RHEL 8

11.3. skopeo

Com o comando skopeo, você pode trabalhar com imagens de contêineres de registros sem usar o daemon de doca ou o comando docker. Os registros podem incluir o Docker Registry, seus próprios registros locais, Red Hat Quay ou OpenShift. As atividades que você pode fazer com o skopeo incluem:

  • inspect: A saída de um comando skopeo inspect é semelhante ao que você vê de um comando docker inspect: informações de baixo nível sobre a imagem do contêiner. Essa saída pode ser em formato json (padrão) ou em formato raw (usando a opção --raw ).
  • copy: Com skopeo copy você pode copiar uma imagem de um container de um registro para outro registro ou para um diretório local.
  • layers: O comando skopeo layers permite baixar as camadas associadas às imagens para que elas sejam armazenadas como tarballs e arquivos de manifesto associados em um diretório local.

Como o comando buildah e outras ferramentas que dependem da biblioteca de contêineres/imagens, o comando skopeo pode trabalhar com imagens de áreas de armazenamento de contêineres diferentes daquelas associadas ao Docker. Os transportes disponíveis para outros tipos de armazenamento de contêineres incluem: containers-storage (para imagens armazenadas por buildah e CRI-O), ostree (para contêineres atômicos e de sistema), oci (para conteúdo armazenado em um diretório compatível com OCI), e outros. Veja a página de manual skopeo para detalhes.

Para experimentar o skopeo, você poderia criar um registro local, depois executar os comandos que se seguem para inspecionar, copiar e baixar as camadas de imagem. Se você quiser seguir junto com os exemplos, comece fazendo o seguinte:

  • Instale um registro local (como o Red Hat Quay. O software de registro de contêineres disponível no pacote doca-distribuição para a RHEL 7, não está disponível para a RHEL 8.
  • Puxe a imagem mais recente da RHEL para seu sistema local (podman pull ubi8/ubi).
  • Retagne a imagem RHEL e empurre-a para seu registro local como a seguir:

    # podman tag ubi8/ubi localhost/myubi8
    # podman push localhost/myubi8

O restante desta seção descreve como inspecionar, copiar e obter camadas da imagem RHEL.

Nota

A ferramenta skopeo, por padrão, requer uma conexão TLS. Ela falha ao tentar usar uma conexão não criptografada. Para anular o padrão e usar um registro http, prefira http: à string <registry>/<image>.

11.3.1. Inspeção de imagens de contêineres com skopeo

Quando você inspeciona uma imagem do contêiner a partir de um registro, você precisa identificar o formato do contêiner (como docker.io ou localhost), a localização do registro (como docker.io ou localhost), e o repositório/imagem (como ubi8/ubi).

O seguinte exemplo inspeciona a imagem do container mariadb do Docker Registry:

# skopeo inspect docker://docker.io/library/mariadb
{
    "Name": "docker.io/library/mariadb",
    "Tag": "latest",
    "Digest": "sha256:d3f56b143b62690b400ef42e876e628eb5e488d2d0d2a35d6438a4aa841d89c4",
    "RepoTags": [
        "10.0.15",
        "10.0.16",
        "10.0.17",
        "10.0.19",
...
    "Created": "2018-06-10T01:53:48.812217692Z",
    "DockerVersion": "1.10.3",
    "Labels": {},
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
...

Assumindo que você empurrou uma imagem de container etiquetada localhost/myubi8 para um registro de container rodando em seu sistema local, o seguinte comando inspeciona essa imagem:

# skopeo inspect docker://localhost/myubi8
{
    "Name": "localhost/myubi8",
    "Tag": "latest",
    "Digest": "sha256:4e09c308a9ddf56c0ff6e321d135136eb04152456f73786a16166ce7cba7c904",
    "RepoTags": [
        "latest"
    ],
    "Created": "2018-06-16T17:27:13Z",
    "DockerVersion": "1.7.0",
    "Labels": {
        "Architecture": "x86_64",
        "Authoritative_Registry": "registry.access.redhat.com",
        "BZComponent": "rhel-server-docker",
        "Build_Host": "rcm-img01.build.eng.bos.redhat.com",
        "Name": "myubi8",
        "Release": "75",
        "Vendor": "Red Hat, Inc.",
        "Version": "8.0"
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:16dc1f96e3a1bb628be2e00518fec2bb97bd5933859de592a00e2eb7774b6ecf"
    ]
}