Odesílání a vyžádání artefaktů OCI pomocí registru kontejneru Azure

Registr kontejnerů Azure můžete použít k ukládání a správě artefaktů Open Container Initiative (OCI) imagí kontejnerů Dockeru a OCI.

Tento článek ukazuje, jak pomocí rozhraní příkazového řádku OCI jako úložiště (ORAS) odeslat ukázkový artefakt – textový soubor – do registru kontejneru Azure. Pak stáhněte artefakt z registru. Různé artefakty OCI v registru kontejneru Azure můžete spravovat pomocí různých nástrojů příkazového řádku odpovídajících jednotlivým artefaktům.

Předpoklady

  • Registr kontejnerů Azure – Vytvořte registr kontejnerů ve svém předplatném Azure. Použijte například Azure Portal nebo az acr create.
  • Azure CLI – Vyžaduje se verze 2.29.1 nebo novější. Viz Instalace Azure CLI pro instalaci nebo upgrade.
  • Rozhraní příkazového řádku ORAS – Vyžaduje se verze v0.16.0 . Viz: Instalace ORAS.
  • Docker (volitelné) – I když není potřeba Docker Desktop, oras rozhraní příkazového řádku využívá úložiště přihlašovacích údajů desktopové verze Dockeru k ukládání přihlašovacích údajů. Pokud je nainstalovaný Docker Desktop, musí být spuštěn pro oras login.

Konfigurace registru

Nakonfigurujte proměnné prostředí pro snadné kopírování a vkládání příkazů do prostředí. Příkazy je možné spouštět místně nebo v Azure Cloud Shellu.

ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io

Přihlášení k registru

Ověřování pomocí individuální identity Microsoft Entra pomocí tokenu AD. Vždy použijte hodnotu 000 pro token, USER_NAME protože se token parsuje prostřednictvím PASSWORD proměnné.

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

Poznámka:

ACR a ORAS podporují více možností ověřování pro uživatele a automatizaci systému. Tento článek používá jednotlivé identity pomocí tokenu Azure. Další možnosti ověřování najdete v tématu Ověřování pomocí registru kontejneru Azure.

Přihlášení pomocí ORAS

Zadejte přihlašovací údaje pro oras login.

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

Nasdílení kořenového artefaktu

Kořenový artefakt je artefakt, který nemá nadřazený subject objekt. Kořenové artefakty můžou být cokoli z image kontejneru, chartu Helmu, souboru readme pro úložiště. Referenční artefakty popsané v tématu Připojení, vložení a přijetí změn artefaktů dodavatelského řetězce jsou artefakty , které odkazují na jiný artefakt. Referenční artefakty můžou být cokoli od podpisu, softwarového vyúčtování materiálů, sestavy skenování nebo jiných vyvíjejících se typů.

V tomto příkladu vytvořte obsah, který představuje soubor Markdown:

echo 'Readme Content' > readme.md

Následující krok nasdílí readme.md soubor do <myregistry>.azurecr.io/samples/artifact:readmesouboru .

  • Registr je identifikován plně kvalifikovaným názvem <myregistry>.azurecr.io registru (malými písmeny), za kterým následuje obor názvů a úložiště: /samples/artifact.
  • Artefakt je označený :readme, aby ho jednoznačně identifikoval z jiných artefaktů uvedených v úložišti (:latest, :v1, :v1.0.1).
  • Nastavení --artifact-type readme/example rozlišuje artefakt od image kontejneru, která používá application/vnd.oci.image.config.v1+json.
  • Identifikuje ./readme.md soubor nahraný a :application/markdown představuje IANA mediaType souboru.
    Další informace najdete v tématu Pokyny pro autory artefaktů OCI.

oras push Pomocí příkazu nasdílejte soubor do registru.

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

Výstup úspěšného nasdílení změn je podobný následujícímu výstupu:

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

Nasdílení kořenového artefaktu s více soubory

Když se artefakty OCI nasdílí do registru s ORAS, každý odkaz na soubor se odešle jako objekt blob. Pokud chcete odeslat samostatné objekty blob, odkazujte na soubory jednotlivě nebo na kolekci souborů odkazováním na adresář.
Další informace o tom, jak odeslat kolekci souborů, najdete v tématu Odesílání artefaktů s více soubory.

Vytvořte pro úložiště určitou dokumentaci:

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

Nasdílení artefaktu s více soubory:

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

Zjištění manifestu

Pokud chcete zobrazit manifest vytvořený jako výsledek oras push, použijte oras manifest fetch:

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

Výstup bude vypadat přibližně takto:

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

Stažení kořenového artefaktu

Vytvoření čistého adresáře pro stahování

mkdir ./download

Spuštěním oras pull příkazu stáhněte artefakt z registru.

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

Zobrazení natažených souborů

tree ./download

Odebrání artefaktu (volitelné)

Pokud chcete odebrat artefakt z registru, použijte oras manifest delete příkaz.

 oras manifest delete $REGISTRY/samples/artifact:readme

Další kroky

  • Další informace o odkazech na artefakty, přidružení podpisů, faktuře softwaru a dalších referenčních typech
  • Další informace o projektu ORAS, včetně postupu konfigurace manifestu pro artefakt
  • Referenční informace o nových typech artefaktů najdete v úložišti artefaktů OCI.