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 voororas 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
:readme
om 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 vanapplication/vnd.oci.image.config.v1+json
. - Het
./readme.md
identificeert het geüploade bestand en de:application/markdown
IANAmediaType
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
- Meer informatie over artefactverwijzingen, het koppelen van handtekeningen, softwarefactuur van materialen en andere referentietypen
- Meer informatie over het ORAS-project, waaronder het configureren van een manifest voor een artefact
- Ga naar de opslagplaats voor OCI-artefacten voor naslaginformatie over nieuwe artefacttypen