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 programuoras 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:readme
pliku .
- 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 elementuapplication/vnd.oci.image.config.v1+json
. - Element
./readme.md
identyfikuje przekazany plik i:application/markdown
reprezentuje IANAmediaType
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 push
polecenia , 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
- Dowiedz się więcej o odwołaniach do artefaktów, kojarzenia podpisów, rachunku za oprogramowanie materiałów i innych typach referencyjnych
- Dowiedz się więcej o projekcie ORAS, w tym o sposobie konfigurowania manifestu dla artefaktu
- Odwiedź repozytorium OCI Artifacts, aby uzyskać informacje referencyjne dotyczące nowych typów artefaktów