Delen via


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:latestmet 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.

  1. 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
    
  2. 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
    
  3. Push het manifest naar uw containerregister met behulp van docker manifest push:

    docker manifest push myregistry.azurecr.io/multi-arch-samples/myimage:multi
    
  4. 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 pullen 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 .