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öroras 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änderapplication/vnd.oci.image.config.v1+json
. - Identifierar
./readme.md
den uppladdade filen och:application/markdown
representerar filens IANAmediaType
.
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 push
anvä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
- Lär dig mer om artefaktreferenser, associera signaturer, programvarufakturering av material och andra referenstyper
- Läs mer om ORAS-projektet, inklusive hur du konfigurerar ett manifest för en artefakt
- Besök OCI Artifacts-lagringsplatsen för referensinformation om nya artefakttyper