Installatiekopieën met meerdere architectuur in uw Azure-containerregister
In dit artikel worden installatiekopieën met meerdere architectuur (meerdere boog) beschreven en wordt uitgelegd hoe u Azure Container Registry functies kunt gebruiken om ze te maken, op te slaan en te gebruiken.
Een installatiekopieën met meerdere bogen is een type containerinstallatiekopieën die varianten voor verschillende architecturen en soms voor verschillende besturingssystemen kunnen combineren. Wanneer u een installatiekopieën uitvoert met ondersteuning voor meerdere architectuur, selecteren containerclients automatisch een afbeeldingsvariant die overeenkomt met uw besturingssysteem en architectuur.
Manifesten en manifestlijsten
Afbeeldingen met meerdere bogen zijn gebaseerd op afbeeldingsmanifesten en manifestlijsten.
Manifest
Elke containerinstallatiekopieën worden vertegenwoordigd door een manifest. Een manifest is een JSON-bestand dat de afbeelding uniek identificeert en verwijst naar de lagen en de bijbehorende grootten.
Een basismanifest voor een Linux-installatiekopieën hello-world
ziet er ongeveer als volgt uit:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 1510,
"digest": "sha256:fbf289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 977,
"digest": "sha256:2c930d010525941c1d56ec53b97bd057a67ae1865eebf042686d2a2d18271ced"
}
]
}
U kunt een manifest in Azure Container Registry weergeven met behulp van de Azure Portal of hulpprogramma's, zoals de opdracht az acr manifest list-metadata in de Azure CLI.
Manifestlijst
Een manifestlijst voor een afbeelding met meerdere boog (meer algemeen bekend als een afbeeldingsindex voor OCI-afbeeldingen) is een verzameling (index) van afbeeldingen. U maakt er een door een of meer afbeeldingsnamen op te geven. Het bevat details over elk van de installatiekopieën, zoals het ondersteunde besturingssysteem en de architectuur, grootte en manifestsamenvatt. De manifestlijst kan op dezelfde manier worden gebruikt als de naam van een installatiekopieën in docker pull
opdrachten en docker run
.
De docker
CLI beheert manifesten en manifestlijsten met behulp van de opdracht docker manifest .
Notitie
Momenteel zijn de docker manifest
opdracht en subopdrachten experimenteel. Raadpleeg de Docker-documentatie voor meer informatie over het gebruik van experimentele opdrachten.
U kunt een manifestlijst weergeven met behulp van de docker manifest inspect
opdracht . Hier volgt de uitvoer voor de installatiekopieën mcr.microsoft.com/mcr/hello-world:latest
met meerdere bogen , die drie manifesten heeft: twee voor Linux-besturingssysteemarchitecturen en één voor een Windows-architectuur.
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 524,
"digest": "sha256:83c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a",
"platform": {
"architecture": "amd64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 525,
"digest": "sha256:873612c5503f3f1674f315c67089dee577d8cc6afc18565e0b4183ae355fb343",
"platform": {
"architecture": "arm64",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1124,
"digest": "sha256:b791ad98d505abb8c9618868fc43c74aa94d08f1d7afe37d19647c0030905cae",
"platform": {
"architecture": "amd64",
"os": "windows",
"os.version": "10.0.17763.1697"
}
}
]
}
Wanneer een manifestlijst met meerdere archen wordt opgeslagen in Azure Container Registry, kunt u de manifestlijst ook weergeven met behulp van de Azure Portal of met hulpprogramma's zoals de opdracht az acr manifest list-metadata.
Een afbeelding met meerdere bogen importeren
Een bestaande installatiekopieën met meerdere bogen kunnen worden geïmporteerd in een Azure-containerregister met behulp van de opdracht az acr import . De importsyntaxis van de installatiekopieën is hetzelfde als bij een installatiekopieën met één architectuur. Net als bij het importeren van een installatiekopieën met één architectuur, worden bij het importeren van een installatiekopieën met meerdere bogen geen Docker-opdrachten gebruikt.
Zie Containerinstallatiekopieën importeren in een containerregister voor meer informatie.
Een afbeelding met meerdere bogen pushen
Wanneer u werkstromen voor het maken van containerinstallatiekopieën voor verschillende architecturen hebt, volgt u deze stappen om een installatiekopieën met meerdere bogen naar uw Azure-containerregister te pushen.
Tag en push elke architectuurspecifieke installatiekopieën naar uw containerregister. In het volgende voorbeeld wordt uitgegaan van twee Linux-architecturen: arm64 en amd64.
docker tag myimage:arm64 \ myregistry.azurecr.io/multi-arch-samples/myimage:arm64 docker push myregistry.azurecr.io/multi-arch-samples/myimage:arm64 docker tag myimage:amd64 \ myregistry.azurecr.io/multi-arch-samples/myimage:amd64 docker push myregistry.azurecr.io/multi-arch-samples/myimage:amd64
Voer uit
docker manifest create
om een manifestlijst te maken om de voorgaande afbeeldingen te combineren tot een afbeelding met meerdere bogen.docker manifest create myregistry.azurecr.io/multi-arch-samples/myimage:multi \ myregistry.azurecr.io/multi-arch-samples/myimage:arm64 \ myregistry.azurecr.io/multi-arch-samples/myimage:amd64
Push het manifest naar uw containerregister met behulp van
docker manifest push
:docker manifest push myregistry.azurecr.io/multi-arch-samples/myimage:multi
Gebruik de
docker manifest inspect
opdracht om de manifestlijst weer te geven. Een voorbeeld van opdrachtuitvoer wordt weergegeven in een voorgaande sectie.
Nadat u het manifest met meerdere bogen naar het register hebt gepusht, werkt u op dezelfde manier met de installatiekopieën met meerdere bogen als met een installatiekopieën met één architectuur. Haal bijvoorbeeld de installatiekopie op met behulp van docker pull
en gebruik az acr repository-opdrachten om tags, manifesten en andere eigenschappen van de installatiekopie weer te geven.
Een installatiekopieën met meerdere bogen bouwen en pushen
Met behulp van functies van ACR Tasks kunt u een installatiekopieën met meerdere bogen bouwen en pushen naar uw Azure-containerregister. Definieer bijvoorbeeld een taak met meerdere stappen in een YAML-bestand waarmee een Linux-installatiekopieën met meerdere boogen worden gemaakt.
In het volgende voorbeeld wordt ervan uitgegaan dat u afzonderlijke Dockerfiles hebt voor twee architecturen, arm64 en amd64. De architectuurspecifieke installatiekopieën worden gebouwd en gepusht. Vervolgens wordt een manifest met meerdere bogen gemaakt en gepusht met de latest
tag:
version: v1.1.0
steps:
- build: -t {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64 -f dockerfile.arm64 .
- build: -t {{.Run.Registry}}/multi-arch-samples/myyimage:{{.Run.ID}}-arm64 -f dockerfile.amd64 .
- push:
- {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-arm64
- {{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64
- cmd: >
docker manifest create
{{.Run.Registry}}/multi-arch-samples/myimage:latest
{{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-arm64
{{.Run.Registry}}/multi-arch-samples/myimage:{{.Run.ID}}-amd64
- cmd: docker manifest push --purge {{.Run.Registry}}/multi-arch-samples/myimage:latest
- cmd: docker manifest inspect {{.Run.Registry}}/multi-arch-samples/myimage:latest
Volgende stappen
- Gebruik Azure Pipelines om containerinstallatiekopieën te bouwen voor verschillende architecturen.
- Meer informatie over het bouwen van installatiekopieën voor meerdere platforms met behulp van de experimentele Docker buildx-invoegtoepassing .