Wypychanie i ściąganie artefaktów OCI przy użyciu rejestru kontenerów platformy Azure

Za pomocą rejestru kontenerów platformy Azure można przechowywać artefakty open container initiative (OCI), a także obrazy kontenerów platformy Docker i OCI oraz zarządzać nimi.

Aby zademonstrować tę możliwość, w tym artykule pokazano, jak używać interfejsu wiersza polecenia rejestru OCI jako usługi Storage (ORAS) do wypychania przykładowego artefaktu — pliku tekstowego — do rejestru kontenerów platformy Azure. Następnie należy ściągnąć artefakt z rejestru. Różne artefakty OCI można zarządzać w rejestrze kontenerów platformy Azure przy użyciu różnych narzędzi wiersza polecenia odpowiednich dla każdego artefaktu.

Wymagania wstępne

  • Usługa Azure Container Registry — Tworzy rejestr kontenera w subskrypcji platformy Azure. Na przykład użyj witryny Azure Portal lub az acr create.
  • Interfejs wiersza polecenia platformy Azure — wymagana jest wersja lub nowsza 2.29.1 . Zobacz Instalowanie interfejsu wiersza polecenia platformy Azure na potrzeby instalacji i/lub uaktualniania.
  • Interfejs wiersza polecenia USŁUGI ORAS — wymagana jest wersja v0.16.0 . Zobacz: Instalacja usługi ORAS.
  • Docker (opcjonalnie) — chociaż program Docker Desktop nie jest wymagany, oras interfejs wiersza polecenia korzysta z magazynu poświadczeń pulpitu platformy Docker do przechowywania poświadczeń. Jeśli program Docker Desktop jest zainstalowany, musi być uruchomiony dla programu oras login.

Konfigurowanie rejestru

Skonfiguruj zmienne środowiskowe, aby łatwo kopiować/wklejać polecenia w powłoce. Polecenia można uruchamiać lokalnie lub w usłudze Azure Cloud Shell.

ACR_NAME=myregistry
REGISTRY=$ACR_NAME.azurecr.io

Logowanie do rejestru

Uwierzytelnij się przy użyciu indywidualnej tożsamości firmy Microsoft Entra przy użyciu tokenu usługi AD. Zawsze używaj wartości "000..." dla USER_NAME elementu , ponieważ token jest analizowany za pośrednictwem zmiennej 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)

Uwaga

Usługi ACR i ORAS obsługują wiele opcji uwierzytelniania dla użytkowników i automatyzacji systemu. W tym artykule użyto tożsamości indywidualnej przy użyciu tokenu platformy Azure. Aby uzyskać więcej opcji uwierzytelniania, zobacz Uwierzytelnianie za pomocą rejestru kontenerów platformy Azure

Logowanie się przy użyciu usługi ORAS

Podaj poświadczenia do oras login.

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

Wypychanie artefaktu głównego

Artefakt główny to artefakt, który nie subject ma elementu nadrzędnego. Artefakty główne mogą być dowolnymi elementami z obrazu kontenera, wykresem helm, plikiem readme repozytorium. Artefakty referencyjne opisane w artykule Dołączanie, wypychanie i ściąganie artefaktów łańcucha dostaw to artefakty odwołujące się do innego artefaktu. Artefakty referencyjne mogą być dowolne elementy od podpisu, rachunku za oprogramowanie materiałów, skanowania raportu lub innych ewoluujących typów.

W tym przykładzie utwórz zawartość reprezentującą plik markdown:

echo 'Readme Content' > readme.md

Poniższy krok wypycha readme.md plik do <myregistry>.azurecr.io/samples/artifact:readmepliku .

  • Rejestr jest identyfikowany z w pełni kwalifikowaną nazwą <myregistry>.azurecr.io rejestru (wszystkie małe litery), a następnie przestrzeni nazw i repozytorium: /samples/artifact.
  • Artefakt jest oznaczony tagiem :readme, aby zidentyfikować go unikatowo z innych artefaktów wymienionych w repozytorium (:latest, :v1, :v1.0.1).
  • Ustawienie --artifact-type readme/example odróżnia artefakt od obrazu kontenera, który używa elementu application/vnd.oci.image.config.v1+json.
  • Element ./readme.md identyfikuje przekazany plik i :application/markdown reprezentuje IANA mediaType pliku.
    Aby uzyskać więcej informacji, zobacz OCI Artifact Authors Guidance (Wskazówki dla autorów artefaktów OCI).

Użyj polecenia , oras push aby wypchnąć plik do rejestru.

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

Dane wyjściowe pomyślnego wypychania są podobne do następujących danych wyjściowych:

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

Wypychanie artefaktu głównego z wieloma plikami

Gdy artefakty OCI są wypychane do rejestru za pomocą usługi ORAS, każde odwołanie do pliku jest wypychane jako obiekt blob. Aby wypchnąć oddzielne obiekty blob, odwołaj się do plików pojedynczo lub kolekcji plików, odwołując się do katalogu.
Aby uzyskać więcej informacji na temat wypychania kolekcji plików, zobacz Wypychanie artefaktów z wieloma plikami

Utwórz dokumentację dla repozytorium:

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

Wypchnij artefakt z wieloma plikami:

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

Odnajdywanie manifestu

Aby wyświetlić manifest utworzony w wyniku oras pushpolecenia , użyj polecenia oras manifest fetch:

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

Dane wyjściowe będą podobne do następujących:

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

Ściąganie artefaktu głównego

Tworzenie czystego katalogu do pobierania

mkdir ./download

Uruchom polecenie , oras pull aby ściągnąć artefakt z rejestru.

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

Wyświetlanie ściągniętych plików

tree ./download

Usuwanie artefaktu (opcjonalnie)

Aby usunąć artefakt z rejestru, użyj oras manifest delete polecenia .

 oras manifest delete $REGISTRY/samples/artifact:readme

Następne kroki