Tous les produits
Search
Centre de documentation

Container Registry:Créer des images de conteneurs multi-architecture

Dernière mise à jour :Aug 18, 2026

L'utilisation de ressources basées sur ARM pour déployer des conteneurs permet de réduire considérablement les coûts. Toutefois, cette approche accroît la charge de maintenance, car elle impose la création et la gestion d'images distinctes pour différentes architectures, telles que x86 et ARM. La fonctionnalité de création multi-architecture disponible dans la console ACR simplifie ce processus en vous permettant de gérer les images de plusieurs architectures sous un seul et même tag.

Prérequis

Contexte

  • Si vous ne sélectionnez qu'une seule architecture, le système crée une image uniquement pour cette architecture et la pousse sous le tag spécifié.

  • Lorsque vous sélectionnez plusieurs architectures, le système de build pousse les images correspondant à toutes les architectures sélectionnées vers le dépôt d'images sous le même tag. Les clients tels que Docker et containerd récupèrent ensuite l'image qui correspond à l'architecture du client.

Le tableau suivant décrit les architectures prises en charge.

Système d'exploitation

Architecture

Prise en charge

Linux

amd64

Oui (architecture par défaut)

Linux

arm64

Oui

Linux

arm/v7

Oui

Linux

arm/v6

Oui

Windows

amd64

Non pris en charge

Étape 1 : Préparer votre projet

Préparez le dépôt de code source pour la création de votre image. À titre d'exemple, vous pouvez créer un projet à l'aide du fichier Go et du Dockerfile suivants.

// Save as hello.go
package main
import (
        "fmt"
        "runtime"
)
func main() {
        fmt.Printf("Hello, %s!\n", runtime.GOARCH)
}
FROM golang:alpine AS builder
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN go build -o hello hello.go
FROM alpine
RUN mkdir /app
WORKDIR /app
COPY --from=builder /app/hello .
CMD ["./hello"]

Étape 2 : Créer un dépôt d'images

Créez un dépôt d'images et liez-le à un dépôt de code source. Le système poussera tous les builds d'images déclenchés depuis le dépôt de code source vers ce dépôt d'images.

  1. Connectez-vous à la console Container Registry.

  2. Dans la barre de navigation supérieure, sélectionnez une région.

  3. Dans le volet de navigation de gauche, cliquez sur Instances.

  4. Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.

  5. Dans le volet de navigation de gauche de la page des détails de l'instance, accédez à Repository > Repositories.

  6. Sur la page Repositories, cliquez sur Create Repository.

  7. Dans l'assistant Repository Info, configurez les paramètres Namespace, Repository Name, Repository Type, Image Version, Accelerated Image, Summary et Description. Cliquez ensuite sur Next.

  8. Dans l'assistant de configuration Code Source, définissez les paramètres Code Source, Build Settings et Build Rules, puis cliquez sur Create Repository.

    Paramètre

    Description

    Code Source

    Fournisseur de code source.

    Build Settings

    • Automatically Build Images When Code Changes : déclenche une règle de build lorsque vous validez du code sur une branche.

    • Build With Servers Deployed Outside Chinese Mainland : crée l'image dans un centre de données situé hors de Chine continentale et la pousse vers la région spécifiée. Sélectionnez cette option si votre Dockerfile doit télécharger des fichiers depuis des sites situés hors de Chine continentale et si la connexion réseau transfrontalière est instable.

    • Build Without Cache : force le téléchargement systématique de l'image de base à chaque build. La sélection de cette option peut augmenter les temps de création d'image.

    Sur la page Repositories, cliquez sur le dépôt d'images cible. Si l'option Build apparaît dans le volet de navigation de gauche, le dépôt d'images est correctement lié au dépôt de code source.

Étape 3 : Créer une règle de build multi-architecture

Pour cet exemple, nous utilisons linux/amd64 et linux/arm64 comme architectures de build.

  1. Connectez-vous à la console Container Registry.

  2. Dans la barre de navigation supérieure, sélectionnez une région.

  3. Dans le volet de navigation de gauche, cliquez sur Instances.

  4. Sur la page Instances, cliquez sur l'instance Enterprise Edition que vous souhaitez gérer.

  5. Dans le volet de navigation de gauche de la page des détails de l'instance, accédez à Repository > Repositories.

  6. Sur la page Repositories, localisez le dépôt cible et cliquez sur Manage dans la colonne Actions.

  7. Dans le volet de navigation de gauche, cliquez sur Build. Dans la section Build Rules, cliquez sur Add Build Rule. À l'étape Build Information, définissez les paramètres et cliquez sur Next.

    Paramètre

    Description

    Type

    Type de code source à partir duquel effectuer le build. Valeurs possibles : Branch et Tag.

    Branch/Tag

    Sélectionnez ou saisissez une branche ou un tag. Les expressions régulières sont prises en charge. Par exemple, si vous utilisez l'expression régulière release-(?<imageTag>\w*), une modification de code dans la branche release-v1 déclenche automatiquement un build pour une image portant le tag v1. Pour plus d'informations, consultez la section Annexe : Groupes de capture nommés pour les expressions régulières.

    Remarque

    Après avoir défini une expression régulière, seuls les builds automatisés sont déclenchés. Vous ne pouvez pas déclencher manuellement un build immédiat.

    Dockerfile Directory

    Chemin d'accès au Dockerfile, relatif à la racine du dépôt. Par exemple, si le Dockerfile se trouve dans le répertoire racine, saisissez /.

    Dockerfile Filename

    Nom du Dockerfile. La valeur par défaut est Dockerfile.

  8. À l'étape Image Version, définissez les paramètres, cliquez sur Save, puis cliquez sur Next.

    Remarque

    Cliquez sur Add Configuration pour ajouter des tags d'image. Vous pouvez ajouter jusqu'à trois tags d'image.

    Paramètre

    Description

    Image Version

    Tag de l'image, par exemple latest. Cette option prend en charge les groupes de capture nommés afin d'utiliser le contenu capturé à partir du paramètre Branch/Tag.

    Build Time

    Heure à laquelle le code source est poussé, au format UTC+8. Les formats pris en charge sont AAAAMMJJ et AAAAMMJJHHMM. Exemples : 20201015 et 202010151613.

    Remarque

    Ce paramètre est facultatif. Si vous le sélectionnez, seuls les builds automatisés sont pris en charge et vous ne pouvez pas déclencher manuellement un build immédiat.

    Commit ID

    ID du commit du dernier push de code. Par défaut, les six premiers caractères sont utilisés. Vous pouvez ajuster la longueur à l'aide du curseur.

    Remarque

    Ce paramètre est facultatif. Si vous le sélectionnez, seuls les builds automatisés sont pris en charge et vous ne pouvez pas déclencher manuellement un build immédiat.

  9. À l'étape Build Configurations, définissez les paramètres de build et cliquez sur Confirm.

    Paramètre

    Description

    Build Architecture

    Sélectionnez les architectures de build. Les builds pour les architectures sélectionnées s'exécutent en parallèle et les images résultantes sont associées à un seul tag d'image.

    Build Parameters

    Arguments d'exécution pour la création de l'image, spécifiés sous forme de paires clé-valeur sensibles à la casse. Vous pouvez définir jusqu'à 20 arguments de build. Ces arguments peuvent modifier les variables d'environnement dans le Dockerfile, ce qui permet à un seul Dockerfile de produire différentes variantes d'image.

  10. Déclenchez la règle de build.

    Vous pouvez déclencher la règle de build de deux manières :

    • Sur la page Build, dans la section Build Rules, localisez la règle de build cible et cliquez sur Build dans la colonne Actions.

    • Poussez le code vers la branche principale de votre dépôt de code source.

    Remarque
    • Pour annuler une tâche de build en cours d'exécution, accédez à la page Build. Dans la section Build Log, localisez la tâche cible et cliquez sur Cancel dans la colonne Actions.

    • Pour afficher le journal d'une tâche de build, accédez à la page Build. Dans la section Build Log, localisez la tâche cible et cliquez sur Log dans la colonne Actions.

    Dans le volet de navigation de gauche, cliquez sur Image Version. L'image créée s'affiche, ce qui indique que le build a réussi.

Étape 4 : Vérifier le résultat du build

  1. Une fois le build terminé, accédez à la page de gestion du dépôt cible et cliquez sur Image Version dans le volet de navigation de gauche pour afficher les images créées pour le tag cible.

    Dans la liste des digests pour le tag d'image, vous pouvez constater que le tag main inclut des images pour les architectures linux/amd64 et linux/arm64, ce qui confirme la réussite du build multi-architecture.

  2. Vérifiez l'image sur des machines dotées des architectures linux/amd64 et linux/arm64.

    • Sur une machine dotée de l'architecture linux/amd64, exécutez la commande suivante :

      docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:main

      Résultat attendu :

      Hello, amd64!
    • Sur une machine dotée de l'architecture linux/arm64, exécutez la commande suivante :

      docker run --rm xxx-registry.cn-hangzhou.cr.aliyuncs.com/test/golang-test:main

      Résultat attendu :

      Hello, arm64!

    Les résultats montrent que l'image créée peut être utilisée sur des machines dotées de différentes architectures.

Annexe : Groupes de capture nommés

Groupes de capture nommés

Un groupe de capture enregistre le contenu correspondant à une sous-expression au sein d'une expression régulière. Vous pouvez faire référence à ce groupe ultérieurement, à l'intérieur ou à l'extérieur de l'expression régulière. Les groupes peuvent être numérotés ou explicitement nommés. Cette annexe propose une brève introduction aux groupes de capture nommés.

Le format général d'un groupe de capture nommé est le suivant :

(?<name>Expression)

Vous pouvez utiliser un groupe de capture nommé pour convertir release-11-2-10 en 11.2.10. L'expression régulière correspondante est la suivante :

release-(?<major>\d*)-(?<minor>\d*)-(?<version>\d*) 

Lorsque cette expression régulière correspond à release-11-2-10, elle stocke automatiquement les sous-expressions correspondantes dans les groupes nommés major, minor et version. Vous pouvez ensuite utiliser le modèle suivant pour générer la chaîne 11.2.10 :

${major}.${minor}.${version} 

Documents connexes

Pour savoir comment créer localement des images de conteneurs multi-architecture, consultez la rubrique Créer et pousser une image multi-architecture vers Container Registry depuis votre machine locale.