Installatiekopieën met meerdere architectuur in uw Azure-containerregister
In dit artikel worden installatiekopieën met meerdere architectuur (multi-arch) geïntroduceerd en wordt uitgelegd hoe u Azure Container Registry-functies kunt gebruiken om ze te maken, op te slaan en te gebruiken.
Een installatiekopie met meerdere boogen is een type containerinstallatiekopie die varianten voor verschillende architecturen en soms voor verschillende besturingssystemen kan 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 boogen 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, 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 weergeven in Azure Container Registry 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 (algemeen bekend als een afbeeldingsindex voor OCI-installatiekopieën) is een verzameling (index) van afbeeldingen en 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 manifestsamenvating. De manifestlijst kan op dezelfde manier worden gebruikt als een installatiekopieënnaam in docker pull
en docker run
opdrachten.
De docker
CLI beheert manifesten en manifestlijsten met behulp van de docker-manifestopdracht .
Notitie
Momenteel zijn de docker manifest
opdrachten 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 boog, 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 lijst met meerdere boogmanifesten wordt opgeslagen in Azure Container Registry, kunt u de manifestlijst ook weergeven met behulp van Azure Portal of met hulpprogramma's zoals de opdracht az acr manifest list-metadata .
Een afbeelding met meerdere boog importeren
Een bestaande multi-arch-installatiekopieën kunnen worden geïmporteerd in een Azure-containerregister met behulp van de opdracht az acr import . De syntaxis voor het importeren van afbeeldingen is hetzelfde als bij een installatiekopieën met één architectuur. Net als bij het importeren van een installatiekopieën met één architectuur gebruikt het importeren van een installatiekopieën met meerdere boog geen Docker-opdrachten.
Zie Containerinstallatiekopieën importeren in een containerregister voor meer informatie.
Een afbeelding met meerdere boog pushen
Wanneer u werkstromen hebt gemaakt voor het maken van containerinstallatiekopieën voor verschillende architecturen, volgt u deze stappen om een multi-arch-installatiekopieën 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
docker manifest create
deze opdracht uit om een manifestlijst te maken om de voorgaande afbeeldingen te combineren tot een multi-arch-installatiekopieën.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 de uitvoer van de opdracht wordt weergegeven in een vorige sectie.
Nadat u het manifest met meerdere boogen naar uw register hebt gepusht, werkt u met de installatiekopieën met meerdere boog op dezelfde manier 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 multi-arch-installatiekopieën bouwen en pushen
Met behulp van functies van ACR Tasks kunt u een multi-arch-installatiekopieën 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 gebouwd.
In het volgende voorbeeld wordt ervan uitgegaan dat u afzonderlijke Dockerfiles hebt voor twee architecturen, arm64 en amd64. Het bouwt en pusht de architectuurspecifieke installatiekopieën en maakt en pusht vervolgens een multi-arch manifest 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 met meerdere platforms met behulp van de experimentele Docker buildx-invoegtoepassing .