[ad_1]
O Docker Hub é o registro mais popular para distribuir e compartilhar imagens de contêiner. No entanto, o Docker Hub e outros registros compatíveis com OCI agora podem fazer mais do que apenas imagens de contêiner. O projeto ORAS (OCI Registry As Storage) transforma registros em lojas de artefatos genéricos, capazes de publicar qualquer ativo relevante para sua aplicação.
Neste artigo, você aprenderá o que é ORAS, os desafios que ele resolve e como começar a usá-lo com o Docker Hub.
Docker Hub vs. Registros OCI
Primeiro, vamos esclarecer uma coisa: o ecossistema de contêineres vai além do Docker. As ferramentas e processos pioneiros do Docker foram padronizados pela OCI. O Docker agora é uma implementação das especificações OCI, juntamente com outros sistemas de contêiner suportados, como Podman e Kubernetes.
O Docker Hub é uma plataforma compatível com OCI Registry para fornecer imagens de contêiner. As ferramentas de contêiner OCI podem consumir conteúdo do Docker Hub e outros registros por meio de comandos como docker pull
Y docker push
. Embora eles funcionassem anteriormente apenas com imagens de contêiner, agora você pode usar o mesmo mecanismo para distribuir os outros componentes do seu aplicativo.
Por que os artefatos genéricos são importantes
Esta funcionalidade está sendo desenvolvida sob a bandeira ORAS. Ele remodela os registros como “armazenamentos de artefatos genéricos” com os quais você pode interagir usando o familiar fluxo de trabalho push/pull.
Um artefato é qualquer coisa que um usuário possa precisar para executar seu software com êxito. Pode ser uma imagem de contêiner ou outro tipo de ativo que faça sentido para o seu projeto:
- gráficos do leme
- Binários pré-construídos e pacotes de instalação
- nascer
- Configurações de política de segurança recomendadas, como regras OPA
- Libere assinaturas, certificados e metadados
Esses ativos vitais geralmente podem ser difíceis de encontrar pelos usuários. Eles tendem a estar espalhados por diferentes plataformas de controle de origem, gerenciadores de pacotes e downloads diretos de sites. Com o ORAS, você pode depositar tudo em um registro centralizado e permitir que os usuários recuperem o conteúdo usando um único conjunto de ferramentas e credenciais. Visualizar o SBOM para sua versão v1.1.0 é tão simples quanto oras pull example.com/my-app/sbom:v1.1.0
por exemplo.
O ORAS é uma virada de jogo para imagens de contêiner?
ORAS não interrompe nenhuma função de registro de contêiner existente. Você pode continuar executando comandos como docker push my-image:latest
para mover suas imagens.
No entanto, há mudanças significativas no armazenamento de conteúdo nos bastidores. ORAS remove a suposição histórica de que todo o conteúdo do registro é uma imagem. Para oferecer suporte a artefatos, os logs devem rastrear o tipo de cada upload concluído. Os diferentes tipos de artefatos são chamados de “tipos de mídia” dentro do ORAS.
Projetos comunitários populares podem registrar seus próprios tipos de mídia para identificar classificações de artefatos comumente usadas, como gráficos Helm. Isso permite que os provedores de registro exibam informações relevantes sobre os artefatos que você armazenou.
O tipo de mídia de imagem de contêiner é usado automaticamente quando você envia de ferramentas existentes, como docker push
. Um tipo padrão “desconhecido” é aplicado quando você carrega diretamente do ORAS CLI, a menos que você especifique um tipo registrado.
Instalando o ORAS CLI
Você precisa da ORAS CLI para enviar e receber artefatos com tipos arbitrários. Você pode baixar a versão mais recente na página de lançamentos do GitHub do projeto. Atualmente, apenas os sistemas macOS e Linux são suportados.
Extraia o arquivo baixado e copie o oras
binário para um local que esteja no seu caminho:
$ tar -zxf oras_0.16.0_*.tar.gz -C oras-install/ $ mv oras-install/oras /usr/local/bin/ $ rm -rf oras_0.16.0_*.tar.gz oras-install/
Verifique se seu binário funciona executando o oras version
domínio:
$ oras version 0.16.0
Agora você está pronto para começar a usar o ORAS.
Usando ORAS com Docker Hub
ORAS é suportado apenas por registros que implementaram suporte para a especificação OCI Artifacts. Esta lista agora inclui a maioria dos principais provedores, incluindo Amazon ECR, Azure, Google e GitHub, bem como instâncias auto-hospedadas implantadas usando a distribuição CNCF.
Usaremos o Docker Hub para este artigo, pois é a solução de registro mais popular. Adicionado suporte completo para artefatos OCI em novembro de 2022.
Entre no seu registro
ORAS reutiliza automaticamente as credenciais de registro que você adicionou anteriormente ao seu ~/.docker/config.json
processo. Se precisar fazer login no Docker Hub, você pode executar docker login
qualquer oras login
para faze-lo:
$ oras login -u username -p password_or_personal_access_token $ docker login -u username -p password_or_personal_access_token
Em seguida, crie um arquivo simples para carregar no registro. Lembre-se de que não há restrições quanto ao tipo de ativo que você dirige. Este exemplo é um arquivo JSON artificial que descreve o estado do projeto, mas você pode carregar qualquer coisa que seja útil para seus usuários ou desenvolvedores.
$ echo '{"app": "oras-demo", "version": "1.1.0"}' > artifact.json
Agora você está pronto para enviar seu arquivo com o ORAS CLI.
empurre seu artefato
Execute o seguinte comando para aumentar seu artefato, depois de substituir <username>
com seu nome de usuário real do Docker Hub:
$ oras push docker.io/<username>/oras-demo:1.1.0 artifact.json:application/json --artifact-type application/vnd.unknown.config.v1+json Uploading 7ac68d8d2a12 artifact.json Uploaded 7ac68d8d2a12 artifact.json Pushed docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b
Existem alguns detalhes dignos de nota neste comando:
- O primeiro argumento define o registro a ser enviado e o rótulo a ser atribuído ao artefato. Isso é semelhante a enviar uma tag de imagem de contêiner.
- Diferente
docker
CLI, ORAS exige que você especifique a URL de registro (docker.io
para DockerHub). ORAS é uma ferramenta genérica que não pode fazer suposições sobre o que ou onde você está pressionando. - O segundo argumento especifica o caminho para o arquivo que você está carregando
filename:content-type
Formato. Como o arquivo de amostra é JSON, oapplication/json
o tipo de conteúdo é selecionado. - O terceiro argumento especifica o tipo de artefato ORAS (tipo de mídia) a ser atribuído ao seu artefato. Você deve usar um tipo de mídia padrão se estiver carregando um tipo de artefato registrado, como um gráfico Helm, mas o valor padrão de “desconhecido” é apropriado para esta demonstração.
O progresso do upload é exibido em seu terminal, semelhante a um docker push
. Tente executar o oras repo tags
Comando para confirmar a inserção concluída:
$ oras repo tags docker.io/<username>/oras-demo 1.1.0
Gerenciar artefatos na IU do Docker Hub
Seu artefato também aparecerá no site do Docker Hub. Na lista de Repositórios, você verá Contains: Other
para indicar que o repositório contém um artefato genérico. Os repositórios de imagens de contêiner são rotulados como Contains: Image
.
Selecione o repositório para visualizar seus detalhes, adicionar uma descrição e visualizar todas as tags disponíveis. É semelhante a trabalhar com imagens de contêiner.
puxando sua engenhoca
Com seu artefato disponível no registro, agora você pode alternar para outra máquina e repetir as etapas para instalar o ORAS CLI e fazer login na sua conta do Docker Hub. Depois de autenticado, use o oras pull
comando para recuperar seus artefatos:
$ oras pull docker.io/<username>/oras-demo:1.1.0 Downloading 7ac68d8d2a12 artifact.json Downloaded 7ac68d8d2a12 artifact.json Pulled docker.io/ilmiont/oras-demo:1.1.0 Digest: sha256:41abfed0ab43a24933c5eafe3c363418264a59eee527821a39fe7c0abf25570b
Os arquivos de artefato serão colocados em seu diretório de trabalho:
$ ls artifact.json $ cat artifact.json {"app": "demo-oras", "version": "1.1.0"}
Você usou o ORAS com sucesso para distribuir seus artefatos de aplicativo, usando a infraestrutura existente disponível em seu provedor de registro de contêiner.
Retomar
ORAS transforma registros de imagens de contêineres em plataformas de distribuição genéricas. Você pode enviar qualquer artefato para seu aplicativo e os usuários podem recuperá-lo usando um mecanismo consistente. Isso evita ter que manter, publicar e alternar entre vários canais de entrega.
O suporte ORAS também está sendo adicionado às ferramentas populares do ecossistema. O Helm permite que você envie gráficos diretamente para um registro ORAS usando seu helm push
comando, por exemplo. Isso evita ter que exportar manualmente o gráfico para que você possa enviá-lo com oras push
. Ele também lida com a configuração do tipo de mídia ORAS correto para você. Você pode esperar mais ferramentas para começar a integrar o ORAS, permitindo que você envie todos os tipos de conteúdo diretamente para seu registro centralizado.
[ad_2]