Delen via


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

  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 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
    
  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 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 pullen 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 .