Skicka och hämta OCI-artefakter med hjälp av ett Azure-containerregister

Du kan använda ett Azure-containerregister för att lagra och hantera OCI-artefakter (Open Container Initiative) samt Docker- och OCI-containeravbildningar .

För att demonstrera den här funktionen visar den här artikeln hur du använder OCI Registry as Storage (ORAS) CLI för att skicka en exempelartefakt – en textfil – till ett Azure-containerregister. Hämta sedan artefakten från registret. Du kan hantera olika OCI-artefakter i ett Azure-containerregister med hjälp av olika kommandoradsverktyg som är lämpliga för varje artefakt.

Förutsättningar

  • Azure-containerregister – Skapa ett containerregister i din Azure-prenumeration. Du kan till exempel använda Azure-portalen eller az acr create.
  • Azure CLI – Version 2.29.1 eller senare krävs. Se Installera Azure CLI för installation och/eller uppgradering.
  • ORAS CLI – Version v0.16.0 krävs. Se: ORAS-installation.
  • Docker (valfritt) – Även om Docker Desktop inte krävs använder oras CLI Docker Desktop-arkivet för autentiseringsuppgifter för lagring av autentiseringsuppgifter. Om Docker Desktop är installerat måste det köras för oras login.

Konfigurera ett register

Konfigurera miljövariabler för att enkelt kopiera/klistra in kommandon i gränssnittet. Kommandona kan köras lokalt eller i Azure Cloud Shell.

ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io

Logga in på ett register

Autentisera med din enskilda Microsoft Entra-identitet med hjälp av en AD-token. Använd alltid "000..." för när USER_NAME token parsas genom variabeln PASSWORD .

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

Kommentar

ACR och ORAS stöder flera autentiseringsalternativ för användare och systemautomatisering. Den här artikeln använder individuell identitet med hjälp av en Azure-token. Fler autentiseringsalternativ finns i Autentisera med ett Azure-containerregister

Logga in med ORAS

Ange autentiseringsuppgifterna till oras login.

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

Push-överför en rotartefakt

En rotartefakt är en artefakt som inte har någon subject överordnad artefakt. Rotartefakter kan vara allt från en containeravbildning, ett helm-diagram, en readme-fil för lagringsplatsen. Referensartefakter som beskrivs i Bifoga, push- och pull-artefakter i leveranskedjan är artefakter som refererar till en annan artefakt. Referensartefakter kan vara allt från en signatur, programvarufakturering av material, genomsökningsrapport eller andra föränderliga typer.

I det här exemplet skapar du innehåll som representerar en markdown-fil:

echo 'Readme Content' > readme.md

Följande steg skickar readme.md filen till <myregistry>.azurecr.io/samples/artifact:readme.

  • Registret identifieras med det fullständigt kvalificerade registernamnet <myregistry>.azurecr.io (alla gemener), följt av namnområdet och lagringsplatsen: /samples/artifact.
  • Artefakten har taggats :readme, för att identifiera den unikt från andra artefakter som anges i lagringsplatsen (:latest, :v1, :v1.0.1).
  • Inställningen --artifact-type readme/example skiljer artefakten från en containeravbildning, som använder application/vnd.oci.image.config.v1+json.
  • Identifierar ./readme.md den uppladdade filen och :application/markdown representerar filens IANA mediaType .
    Mer information finns i Vägledning för OCI-artefaktförfattare.

oras push Använd kommandot för att skicka filen till registret.

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

Utdata för en lyckad push liknar följande utdata:

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

Push-överför en rotartefakt med flera filer

När OCI-artefakter skickas till ett register med ORAS skickas varje filreferens som en blob. Om du vill skicka separata blobar refererar du till filerna individuellt eller en samling filer genom att referera till en katalog.
Mer information om hur du push-överför en samling filer finns i Push-överföra artefakter med flera filer

Skapa dokumentation för lagringsplatsen:

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

Push-överför artefakten med flera filer:

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

Identifiera manifestet

Om du vill visa manifestet som skapats som ett resultat av oras pushanvänder du oras manifest fetch:

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

Utdata ser ut ungefär så här:

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

Hämta en rotartefakt

Skapa en ren katalog för nedladdning

mkdir ./download

oras pull Kör kommandot för att hämta artefakten från registret.

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

Visa de hämtade filerna

tree ./download

Ta bort artefakten (valfritt)

Om du vill ta bort artefakten från registret använder du oras manifest delete kommandot .

 oras manifest delete $REGISTRY/samples/artifact:readme

Nästa steg