Enviar e extrair artefatos OCI usando um registro de contêiner do Azure
Você pode usar um registro de contêiner do Azure para armazenar e gerenciar artefatos OCI (Open Container Initiative), bem como imagens de contêiner do Docker e OCI.
Para demonstrar essa capacidade, este artigo mostra como usar a CLI do Registro OCI como Armazenamento (ORAS) para enviar por push um artefato de exemplo - um arquivo de texto - para um registro de contêiner do Azure. Em seguida, puxe o artefato do registro. Você pode gerenciar vários artefatos OCI em um registro de contêiner do Azure usando diferentes ferramentas de linha de comando apropriadas para cada artefato.
Pré-requisitos
- Registo de contentores do Azure - crie um registos de contentores na sua subscrição do Azure. Por exemplo, use o portal do Azure ou az acr create.
- CLI do Azure - Versão
2.29.1
ou posterior é necessária. Consulte Instalar a CLI do Azure para instalação e/ou atualização. - ORAS CLI - A versão
v0.16.0
é necessária. Consulte: Instalação do ORAS. - Docker (opcional) - Embora o Docker Desktop não seja necessário, a CLI utiliza o
oras
armazenamento de credenciais da área de trabalho do Docker para armazenar credenciais. Se o Docker Desktop estiver instalado, ele deverá estar em execução paraoras login
.
Configurar um registo
Configure variáveis de ambiente para copiar/colar comandos facilmente em seu shell. Os comandos podem ser executados localmente ou no Azure Cloud Shell.
ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io
Iniciar sessão num registo
Autentique-se com sua identidade individual do Microsoft Entra usando um token AD. Use sempre "000..." para o como o USER_NAME
token é analisado através da PASSWORD
variável.
# Login to Azure
az login
# Login to ACR, using a token based on your Azure identity
USER_NAME="00000000-0000-0000-0000-000000000000"
PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
Nota
ACR e ORAS suportam várias opções de autenticação para usuários e automação do sistema. Este artigo usa identidade individual, usando um token do Azure. Para obter mais opções de autenticação, consulte Autenticar com um registro de contêiner do Azure
Iniciar sessão com a ORAS
Forneça as credenciais para oras login
.
oras login $REGISTRY \
--username $USER_NAME \
--password $PASSWORD
Empurrar um artefato raiz
Um artefato de raiz é um artefato que não subject
tem pai. Os artefatos raiz podem ser qualquer coisa, desde uma imagem de contêiner, um gráfico de leme, um arquivo readme para o repositório. Os artefatos de referência, descritos em Anexar, empurrar e puxar artefatos da cadeia de suprimentos são artefatos que se referem a outro artefato. Os artefatos de referência podem ser qualquer coisa, desde uma assinatura, lista de materiais de software, relatório de digitalização ou outros tipos em evolução.
Para este exemplo, crie conteúdo que represente um arquivo de marcação:
echo 'Readme Content' > readme.md
A etapa a seguir envia o readme.md
arquivo para <myregistry>.azurecr.io/samples/artifact:readme
.
- O registro é identificado com o nome
<myregistry>.azurecr.io
do registro totalmente qualificado (todas minúsculas), seguido pelo namespace e repo:/samples/artifact
. - O artefato é marcado
:readme
, para identificá-lo exclusivamente a partir de outros artefatos listados no repositório (:latest, :v1, :v1.0.1
). - A configuração
--artifact-type readme/example
diferencia o artefato de uma imagem de contêiner, que usaapplication/vnd.oci.image.config.v1+json
. - O
./readme.md
identifica o arquivo carregado e o representa o:application/markdown
IANAmediaType
do arquivo.
Para obter mais informações, consulte OCI Artifact Authors Guidance.
Use o comando para enviar o oras push
arquivo para o registro.
Linux, WSL2 ou macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example \
./readme.md:application/markdown
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown
A saída para um push bem-sucedido é semelhante à seguinte saída:
Uploading 2fdeac43552b readme.md
Uploaded 2fdeac43552b readme.md
Pushed <myregistry>.azurecr.io/samples/artifact:readme
Digest: sha256:e2d60d1b171f08bd10e2ed171d56092e39c7bac1aec5d9dcf7748dd702682d53
Enviar por push um artefato raiz de vários arquivos
Quando os artefatos OCI são enviados por push para um registro com ORAS, cada referência de arquivo é enviada por push como um blob. Para enviar blobs separados, faça referência aos arquivos individualmente ou à coleção de arquivos fazendo referência a um diretório.
Para obter mais informações sobre como enviar por push uma coleção de arquivos, consulte Enviando artefatos por push com vários arquivos
Crie algumas documentações para o repositório:
echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md
Empurre o artefato de vários arquivos:
Linux, WSL2 ou macOS
oras push $REGISTRY/samples/artifact:readme \
--artifact-type readme/example\
./readme.md:application/markdown\
./details
Windows
.\oras.exe push $REGISTRY/samples/artifact:readme ^
--artifact-type readme/example ^
.\readme.md:application/markdown ^
.\details
Descubra o manifesto
Para exibir o manifesto criado como resultado do oras push
, use oras manifest fetch
:
oras manifest fetch --pretty $REGISTRY/samples/artifact:readme
A saída será semelhante a:
{
"mediaType": "application/vnd.oci.artifact.manifest.v1+json",
"artifactType": "readme/example",
"blobs": [
{
"mediaType": "application/markdown",
"digest": "sha256:2fdeac43552b71eb9db534137714c7bad86b53a93c56ca96d4850c9b41b777fc",
"size": 15,
"annotations": {
"org.opencontainers.image.title": "readme.md"
}
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:0d6c7434a34f6854f971487621426332e6c0fda08040b9e6cc8a93f354cee0b1",
"size": 189,
"annotations": {
"io.deis.oras.content.digest": "sha256:11eceb2e7ac3183ec9109003a7389468ec73ad5ceaec0c4edad0c1b664c5593a",
"io.deis.oras.content.unpack": "true",
"org.opencontainers.image.title": "details"
}
}
],
"annotations": {
"org.opencontainers.artifact.created": "2023-01-10T14:44:06Z"
}
}
Puxe um artefato de raiz
Criar um diretório limpo para download
mkdir ./download
Execute o comando para extrair o oras pull
artefato do seu registro.
oras pull -o ./download $REGISTRY/samples/artifact:readme
Ver os ficheiros retirados
tree ./download
Remover o artefato (opcional)
Para remover o artefato do registro, use o oras manifest delete
comando.
oras manifest delete $REGISTRY/samples/artifact:readme
Próximos passos
- Saiba mais sobre referências de artefatos, associando assinaturas, lista de materiais de software e outros tipos de referência
- Saiba mais sobre o Projeto ORAS, incluindo como configurar um manifesto para um artefato
- Visite o repositório OCI Artifacts para obter informações de referência sobre novos tipos de artefatos