OCI-artefacten pushen en ophalen met behulp van een Azure-containerregister

U kunt een Azure-containerregister gebruiken om OCI-artefacten (Open Container Initiative) en Docker- en OCI-containerinstallatiekopieën op te slaan en te beheren.

Om deze mogelijkheid te demonstreren, laat dit artikel zien hoe u de OCI Registry as Storage (ORAS) CLI gebruikt om een voorbeeldartefact ( een tekstbestand ) naar een Azure-containerregister te pushen. Haal vervolgens het artefact op uit het register. U kunt verschillende OCI-artefacten in een Azure-containerregister beheren met behulp van verschillende opdrachtregelprogramma's die geschikt zijn voor elk artefact.

Vereisten

  • Azure-containerregister: maak een containerregister in uw Azure-abonnement. Gebruik bijvoorbeeld Azure Portal of az acr create.
  • Azure CLI : versie 2.29.1 of hoger is vereist. Zie Azure CLI installeren voor installatie en/of upgrade.
  • ORAS CLI : versie v0.16.0 is vereist. Zie: ORAS-installatie.
  • Docker (optioneel): hoewel Docker Desktop niet vereist is, maakt de CLI gebruik van het oras docker-bureaubladreferentiearchief voor het opslaan van referenties. Als Docker Desktop is geïnstalleerd, moet deze worden uitgevoerd voor oras login.

Een register configureren

Configureer omgevingsvariabelen om opdrachten eenvoudig te kopiëren/plakken in uw shell. De opdrachten kunnen lokaal of in De Azure Cloud Shell worden uitgevoerd.

ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io

Aanmelden bij een register

Verifieer met uw afzonderlijke Microsoft Entra-identiteit met behulp van een AD-token. Gebruik altijd '000...' als USER_NAME het token wordt geparseerd via de PASSWORD variabele.

# 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)

Notitie

ACR en ORAS ondersteunen meerdere verificatieopties voor gebruikers en systeemautomatisering. In dit artikel wordt gebruikgemaakt van een afzonderlijke identiteit, met behulp van een Azure-token. Zie Verifiëren met een Azure-containerregister voor meer verificatieopties

Aanmelden met ORAS

Geef de referenties op voor oras login.

oras login $REGISTRY \
  --username $USER_NAME \
  --password $PASSWORD

Een hoofdartefact pushen

Een hoofdartefact is een artefact dat geen subject bovenliggend item heeft. Hoofdartefacten kunnen van alles zijn: een containerinstallatiekopieën, een Helm-grafiek, een leesmij-bestand voor de opslagplaats. Referentieartefacten, beschreven in Attach, push en pull-toeleveringsketenartefacten , zijn artefacten die verwijzen naar een ander artefact. Referentieartefacten kunnen van alles zijn, zoals een handtekening, softwarefactuur van materialen, scanrapport of andere veranderende typen.

In dit voorbeeld maakt u inhoud die een Markdown-bestand vertegenwoordigt:

echo 'Readme Content' > readme.md

De volgende stap pusht het readme.md bestand naar <myregistry>.azurecr.io/samples/artifact:readme.

  • Het register wordt geïdentificeerd met de volledig gekwalificeerde registernaam <myregistry>.azurecr.io (alle kleine letters), gevolgd door de naamruimte en opslagplaats: /samples/artifact.
  • Het artefact is gelabeld :readmeom het uniek te identificeren van andere artefacten die worden vermeld in de opslagplaats (:latest, :v1, :v1.0.1).
  • Instelling --artifact-type readme/example onderscheidt het artefact van een containerinstallatiekopie, die gebruikmaakt van application/vnd.oci.image.config.v1+json.
  • Het ./readme.md identificeert het geüploade bestand en de :application/markdownIANA mediaType van het bestand.
    Zie richtlijnen voor auteurs van OCI-artefacten voor meer informatie.

Gebruik de oras push opdracht om het bestand naar het register te pushen.

Linux, WSL2 of 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

De uitvoer voor een geslaagde push is vergelijkbaar met de volgende uitvoer:

Uploading 2fdeac43552b readme.md
Uploaded  2fdeac43552b readme.md
Pushed <myregistry>.azurecr.io/samples/artifact:readme
Digest: sha256:e2d60d1b171f08bd10e2ed171d56092e39c7bac1aec5d9dcf7748dd702682d53

Een hoofdartefact met meerdere bestanden pushen

Wanneer OCI-artefacten worden gepusht naar een register met ORAS, wordt elke bestandsreferentie gepusht als een blob. Als u afzonderlijke blobs wilt pushen, verwijst u naar de bestanden afzonderlijk of verzameling bestanden door te verwijzen naar een map.
Zie Artefacten pushen met meerdere bestanden voor meer informatie over het pushen van een verzameling bestanden

Maak enkele documentatie voor de opslagplaats:

echo 'Readme Content' > readme.md
mkdir details/
echo 'Detailed Content' > details/readme-details.md
echo 'More detailed Content' > details/readme-more-details.md

Push het artefact met meerdere bestanden:

Linux, WSL2 of 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

Het manifest detecteren

Als u het manifest wilt weergeven dat is gemaakt als gevolg van oras push, gebruikt u oras manifest fetch:

oras manifest fetch --pretty $REGISTRY/samples/artifact:readme

De uitvoer ziet er ongeveer als volgt uit:

{
  "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"
  }
}

Een hoofdartefact ophalen

Een schone map maken om te downloaden

mkdir ./download

Voer de oras pull opdracht uit om het artefact op te halen uit het register.

oras pull -o ./download $REGISTRY/samples/artifact:readme

De opgehaalde bestanden weergeven

tree ./download

Het artefact verwijderen (optioneel)

Gebruik de oras manifest delete opdracht om het artefact uit het register te verwijderen.

 oras manifest delete $REGISTRY/samples/artifact:readme

Volgende stappen