Tous les produits
Search
Centre de documentation

MaxCompute:Images personnalisées

Dernière mise à jour :Aug 10, 2026

Les images personnalisées MaxCompute vous permettent d'empaqueter des dépendances tierces dans des images Docker et de les utiliser dans vos jobs SQL et Python (PyODPS ou MaxFrame).

Contexte

Le développement en SQL et Python sur MaxCompute repose souvent sur de nombreux packages tiers. La fonctionnalité de gestion des images personnalisées vous permet d'utiliser des images Docker pour créer des environnements de développement complets adaptés à vos jobs MaxCompute SQL et Python (PyODPS ou MaxFrame).

Prérequis

  • Taille de l'image : la taille maximale d'une image personnalisée unique dans MaxCompute est de 10 Go.

  • Nombre d'images : chaque locataire MaxCompute peut télécharger jusqu'à 10 images.

  • Exigences relatives à la version d'ACR : seules les instances Standard Edition et Premium Edition de ACR Enterprise Edition sont prises en charge.

  • Exigence relative à l'architecture CPU : construisez vos images sur une architecture CPU x86_64. Les architectures CPU non x86_64, telles que les puces Apple M-series sous macOS et ARM, ne sont pas prises en charge.

  • Exigences relatives aux versions des bibliothèques : l'environnement d'exécution des jobs MaxCompute est comparable à CentOS 7. Lors de la création d'une image, utilisez des versions de packages compatibles avec CentOS 7. La source yum de l'image de base est préconfigurée pour utiliser le miroir Alibaba Cloud CentOS 7.

  • Restrictions relatives aux répertoires :

    Lorsque vous installez des packages à l'aide d'outils tels que pip ou yum, ne placez pas de fichiers personnels dans les répertoires /home/admin, /usr/local/lib, /usr/ali, /apsara. Au démarrage d'un conteneur, MaxCompute monte son environnement d'exécution sur ces répertoires, ce qui écrase leur contenu d'origine.

Procédure

Étape 1 : Installer Docker

Étape 2 : Accorder les autorisations

Accordez au compte ou à l'utilisateur l'autorisation de lecture pour les rôles RAM, les **autorisations opérationnelles pour ACR et les autorisations opérationnelles pour les images personnalisées MaxCompute**, comme indiqué dans le tableau suivant.

Cas d'utilisation

Type de compte

Autorisations

Référence

Autorisation de lecture pour les rôles RAM

Compte Alibaba Cloud (recommandé)

Par défaut, un compte Alibaba Cloud dispose d'une autorisation de lecture pour les rôles RAM. Aucune autorisation n'est requise.

S.O.

Utilisateur RAM

Accordez l'autorisation AliyunRAMReadOnlyAccess.

Autorisations opérationnelles ACR

Compte Alibaba Cloud (recommandé)

Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations pour ACR. Aucune autorisation n'est requise.

S.O.

Utilisateur RAM

Un utilisateur RAM nécessite l'autorisation AliyunContainerRegistryReadOnlyAccess pour gérer ACR.

Autoriser un utilisateur RAM pour ACR

Autorisations opérationnelles pour les images personnalisées MaxCompute

Compte Alibaba Cloud (recommandé)

Par défaut, un compte Alibaba Cloud dispose des autorisations complètes pour gérer les images personnalisées dans MaxCompute. Aucune autorisation n'est requise.

S.O.

Utilisateur RAM

Pour qu'un utilisateur RAM puisse gérer les images personnalisées MaxCompute, accordez les autorisations nécessaires en fonction de vos besoins métier.

Étape 3 : Créer une image personnalisée

Créez une image personnalisée à l'aide d'un Dockerfile basé sur une image de base MaxCompute.

  • L'URL de l'image de base CentOS MaxCompute est registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest. Cette image de base fournit un environnement minimal comprenant Python 3.7, Python 3.11, pip et yum.

  • L'adresse de l'image de base Ubuntu MaxCompute est registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest.

  1. Créez un Dockerfile basé sur une image de base MaxCompute. Exécutez cette commande :

    vim DockerFile
  2. Ajoutez le contenu suivant au Dockerfile :

    # Use the MaxCompute CentOS base image.
    FROM registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest
    
    # To use the Ubuntu image, replace the image address with registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest.
    
    # Install system dependencies.
    RUN yum install vi -y
    
    # Install third-party libraries.
    RUN /usr/ali/python3.7/bin/python3 -m pip install --no-cache-dir pandas
  3. Construisez l'image à partir du Dockerfile.

    sudo docker build -f DockerFile -t <image_name>:<tag> .

    Paramètres :

    • image_name : nom de l'image personnalisée.

    • tag : version de l'image personnalisée.

Étape 4 : Pousser l'image vers ACR

  1. Connectez-vous à la console Container Registry et sélectionnez une région dans le coin supérieur gauche.

  2. Dans le volet de navigation de gauche, sélectionnez Instances.

  3. Sur la page Instances, cliquez sur Create ACR EE. Si vous avez déjà créé une instance, ignorez cette étape.

    Important

    Vous ne pouvez télécharger des images personnalisées que vers des instances Standard Edition ou Premium Edition de ACR Enterprise Edition.

  4. Sur la page Instances, recherchez l'instance Enterprise Edition cible et cliquez sur Manage pour ouvrir la page de présentation de l'instance.

  5. Dans le volet de navigation de gauche, sélectionnez Repository > Repositories.

    Sur la page Repository > Repositories, cliquez sur Create Repository. Dans la boîte de dialogue Create Repository, saisissez les informations suivantes et cliquez sur Next.

    Paramètre

    Obligatoire

    Description

    Region

    Oui

    La région de l'instance actuelle est renseignée automatiquement.

    Namespace

    Oui

    Définissez le namespace pour le dépôt d'images. Ce paramètre ne peut pas être modifié ultérieurement.

    • Nous vous recommandons de créer un namespace correspondant à une entreprise, une organisation ou un utilisateur individuel, par exemple aliyun.

    • Nous vous déconseillons de créer un namespace correspondant à un module ou un système, tel que tomcat ou centos.

    Repository Name

    Oui

    Le nom doit comporter entre 2 et 120 caractères et peut contenir des lettres minuscules, des chiffres et les séparateurs suivants : tiret bas (_), tiret (-), point (.) et barre oblique (/). Le nom ne peut pas commencer ni se terminer par un séparateur.

    Repository Type

    Non

    • Public : pour extraire une image publique, vous devez vous connecter à l'instance Enterprise Edition. Si vous souhaitez autoriser les extractions anonymes, activez le paramètre d'extraction publique anonyme pour l'instance.

    • L'extraction d'une image privée de l'édition Enterprise nécessite la connexion à une instance Enterprise Edition disposant des autorisations d'extraction.

    • La valeur par défaut est privé.

    Tags

    Non

    After selected, all tags other than the latest in the repository cannot be overwritten, ensuring the consistency of the container images.

    Accelerated Image

    Non

    After selected, all images in the repository will automatically generate the accelerated images with "_accelerated" suffix

    • Full Mode : Full mode provides a significant acceleration effect. The size of an accelerated image is approximately 130% the size of the original image. The system requires approximately 25 seconds to generate a 1 GB-sized accelerated image. If an accelerated image layer has been generated for an image layer, the system does not generate an accelerated image layer again for the image layer.

    • Index-only Mode (Public Preview) : ce mode offre environ 70 % de l'effet d'accélération du mode complet. L'image accélérée représente environ 3 % de la taille de l'image d'origine. Il faut environ 3 secondes pour générer une image accélérée de 1 Go. Les couches déjà indexées ne sont pas réindexées.

    Summary

    Oui

    Max. 100 characters

    Description

    Non

    Supports Markdown Format

  6. Configurez la source de code :

    Pour Code Source, sélectionnez Local Repository et cliquez sur Create Repository.

    Pour plus d'informations, consultez la rubrique Utiliser une instance Enterprise Edition pour construire des images.

  7. Poussez l'image personnalisée vers une instance ACR située dans le même compte.

    1. Sur la page Repository Repositories, cliquez sur Manage dans la colonne Actions du dépôt cible.

    2. Dans le volet de navigation de gauche, sélectionnez Details.

      Suivez les instructions figurant dans la section Instructions on Images en bas de la page Details pour pousser une image personnalisée depuis votre environnement Docker vers le dépôt d'images Container Registry.

    3. (Facultatif) Si votre machine se trouve dans un VPC, effectuez les étapes suivantes :

      1. Configurez le contrôle d'accès pour que le VPC se connecte à l'instance Enterprise Edition. Pour plus d'informations, consultez la rubrique Configurer l'accès via un VPC.

      2. Lorsque vous travaillez avec une instance ACR Enterprise Edition dans un environnement Docker, vous devez ajouter vpc au nom de domaine. Par exemple, vous devez modifier acr-test-registry.cn-wulanchabu.cr.aliyuncs.com en acr-test-registry-vpc.cn-wulanchabu.cr.aliyuncs.com.

        $ docker login --username=***@test.aliyunid.com acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
      Remarque

      Si une erreur se produit lors de la connexion à l'instance, vérifiez si l'accès au réseau public est activé pour le dépôt.

Étape 5 : Ajouter l'image à MaxCompute

Associez une image ACR existante à MaxCompute afin de gérer centralement vos images de développement.

  1. Connectez-vous à la console MaxCompute et sélectionnez une région dans le coin supérieur gauche.

  2. Dans le volet de navigation de gauche, choisissez Manage Configurations > Images .

  3. Sur la page Images, cliquez sur l'onglet Custom Image.

  4. Dans l'onglet Custom Image, cliquez sur Create Image. Dans la boîte de dialogue Add Image, configurez les paramètres suivants :

    Remarque

    Lors de la première création d'une image, la boîte de dialogue MaxCompute Service-linked Role s'affiche. Cliquez sur OK. Le système crée automatiquement un rôle lié au service pour accéder aux ressources ACR.

    |
    **Paramètre**
    |
    **Description**
    | | --- | --- | |
    **Image Name**
    |
    Obligatoire. Nom de l'image personnalisée. **The image name must start with a lowercase letter, and can contain only lowercase letters, digits, hyphens (-), and underscores (_).**


    Ce nom est utilisé pour référencer l'image dans MaxCompute SQL, PyODPS et MaxFrame.
    | |
    **Image Type**
    |
    Obligatoire. Type de l'image ACR. Seules les images ACR Enterprise Edition sont prises en charge.
    | |
    **Enterprise Edition Image Instance**
    |
    Obligatoire. Sélectionnez l'instance Enterprise Edition que vous avez créée dans ACR.
    | |
    **Image Namespace**
    |
    Obligatoire. Sélectionnez le namespace d'image que vous avez créé dans ACR.
    | |
    **Image Repository**
    |
    Obligatoire. Sélectionnez le dépôt d'images que vous avez créé dans ACR.
    | |
    **Image Version**
    |
    Obligatoire. Sélectionnez la version de l'image que vous avez téléchargée vers ACR.
    | |
    **Image Description**
    |
    Obligatoire. Ajoutez une description pour l'image.
    |

    Cliquez sur Image Name. La nouvelle image personnalisée apparaît dans la liste des images personnalisées.




































Étape 6 : Utiliser l'image

Les images personnalisées peuvent être référencées dans les UDF MaxCompute SQL, PyODPS et MaxFrame.

Important

Chaque job ne peut spécifier qu'une seule image. La spécification de plusieurs images peut entraîner des conflits.

  • Pour les UDF, utilisez des indicateurs au niveau de la session pour spécifier l'image et la version Python. Exemple :

    set odps.sql.python.version=cp37;
    set odps.session.image = <image_name>;
  • Pour PyODPS, utilisez le paramètre image des méthodes execute ou persist pour spécifier l'image. Exemple :

    Remarque

    Pour référencer une image dans PyODPS, vous devez mettre à niveau PyODPS vers la version 0.11.5 ou ultérieure.

    image='<image_name>'
  • Pour MaxFrame, utilisez la configuration suivante pour spécifier l'image pour le job :

    config.options.sql.settings = {
        "odps.session.image": "<image_name>"
    }