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
Linux : installez Docker en suivant la documentation officielle de Docker.
-
macOS ou Windows :
Développeurs individuels : utilisez Docker Desktop.
Utilisateurs professionnels sans licence Docker Desktop : nous vous recommandons d'utiliser Rancher Desktop, une solution open source.
É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. |
||
|
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.
-
Créez un Dockerfile basé sur une image de base MaxCompute. Exécutez cette commande :
vim DockerFile -
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 -
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
Connectez-vous à la console Container Registry et sélectionnez une région dans le coin supérieur gauche.
Dans le volet de navigation de gauche, sélectionnez Instances.
-
Sur la page Instances, cliquez sur Create ACR EE. Si vous avez déjà créé une instance, ignorez cette étape.
ImportantVous ne pouvez télécharger des images personnalisées que vers des instances Standard Edition ou Premium Edition de ACR Enterprise Edition.
Sur la page Instances, recherchez l'instance Enterprise Edition cible et cliquez sur Manage pour ouvrir la page de présentation de l'instance.
-
Dans le volet de navigation de gauche, sélectionnez .
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
tomcatoucentos.
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
-
-
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.
-
Poussez l'image personnalisée vers une instance ACR située dans le même compte.
Sur la page Repository Repositories, cliquez sur Manage dans la colonne Actions du dépôt cible.
-
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.
-
(Facultatif) Si votre machine se trouve dans un VPC, effectuez les étapes suivantes :
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.
-
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.comenacr-test-registry-vpc.cn-wulanchabu.cr.aliyuncs.com.$ docker login --username=***@test.aliyunid.com acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
RemarqueSi 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.
Connectez-vous à la console MaxCompute et sélectionnez une région dans le coin supérieur gauche.
Dans le volet de navigation de gauche, choisissez .
Sur la page Images, cliquez sur l'onglet Custom Image.
-
Dans l'onglet Custom Image, cliquez sur Create Image. Dans la boîte de dialogue Add Image, configurez les paramètres suivants :
|RemarqueLors 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.
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
imagedes méthodesexecuteoupersistpour spécifier l'image. Exemple :RemarquePour 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>" }