Las imágenes personalizadas de MaxCompute le permiten empaquetar dependencias de terceros en imágenes de Docker y utilizarlas en trabajos de SQL y Python (PyODPS o MaxFrame).
Contexto
El desarrollo en SQL y Python para MaxCompute suele requerir numerosos paquetes de terceros. La función de gestión de imágenes personalizadas le permite usar imágenes de Docker para crear entornos de desarrollo completos para sus trabajos de MaxCompute SQL y Python (PyODPS o MaxFrame).
Requisitos previos
Tamaño de la imagen: El tamaño máximo para una sola imagen personalizada en MaxCompute es de 10 GB.
Cantidad de imágenes: Cada inquilino de MaxCompute puede cargar hasta 10 imágenes.
Requisitos de versión de ACR: Solo se admiten instancias Standard Edition y Premium Edition de ACR Enterprise Edition.
Requisito de arquitectura de CPU: Compile sus imágenes en una arquitectura de CPU x86_64. No se admiten arquitecturas de CPU que no sean x86_64, como los chips de la serie M de macOS ni ARM.
Requisitos de versión de biblioteca: El entorno de ejecución de trabajos de MaxCompute es comparable a CentOS 7. Cuando compile una imagen, utilice versiones de paquetes compatibles con CentOS 7. El origen yum en la imagen base está preconfigurado para usar el origen de imágenes de Alibaba Cloud CentOS 7.
-
Restricciones de directorio:
Cuando utilice herramientas como pip o yum para instalar paquetes, no coloque archivos personales en los directorios
/home/admin, /usr/local/lib, /usr/ali, /apsara. Al iniciarse un contenedor, MaxCompute monta su entorno de ejecución en estos directorios y sobrescribe su contenido original.
Procedimiento
Paso 1: Instalar Docker
Linux: Instale Docker siguiendo la documentación oficial de Docker.
-
macOS o Windows:
Desarrolladores individuales: Puede utilizar Docker Desktop.
Usuarios empresariales sin licencia de Docker Desktop: Se recomienda utilizar la opción de código abierto Rancher Desktop.
Paso 2: Otorgar permisos
Otorgue a la cuenta o al usuario el permiso de lectura para roles de RAM, los **permisos operativos para ACR y los permisos operativos para imágenes personalizadas de MaxCompute**, tal como se describe en la siguiente tabla.
|
Caso de uso |
Tipo de cuenta |
Permisos |
Referencia |
|
Permiso de lectura para roles de RAM |
Cuenta de Alibaba Cloud (recomendado) |
De forma predeterminada, una cuenta de Alibaba Cloud tiene permiso de lectura para roles de RAM. No se requiere autorización. |
N/A |
|
Usuario de RAM |
Otorgue el permiso AliyunRAMReadOnlyAccess. |
||
|
Permisos operativos de ACR |
Cuenta de Alibaba Cloud (recomendado) |
De forma predeterminada, una cuenta de Alibaba Cloud tiene todos los permisos para ACR. No se requiere autorización. |
N/A |
|
Usuario de RAM |
Un usuario de RAM requiere el permiso AliyunContainerRegistryReadOnlyAccess para operar ACR. |
||
|
Permisos operativos de imágenes personalizadas de MaxCompute |
Cuenta de Alibaba Cloud (recomendado) |
De forma predeterminada, una cuenta de Alibaba Cloud tiene permisos completos para gestionar imágenes personalizadas en MaxCompute. No se requiere autorización. |
N/A |
|
Usuario de RAM |
Para que un usuario de RAM gestione imágenes personalizadas de MaxCompute, otorgue los permisos necesarios según sus requisitos comerciales. |
Paso 3: Compilar una imagen personalizada
Compile una imagen personalizada mediante un Dockerfile basado en una imagen base de MaxCompute.
La URL de la imagen base CentOS de MaxCompute es
registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/base_image:latest. Esta imagen base proporciona un entorno básico que incluye Python 3.7, Python 3.11, pip y yum.La dirección de la imagen base Ubuntu de MaxCompute es
registry.cn-zhangjiakou.aliyuncs.com/maxcompute_image/ubuntu_20.04:latest.
-
Cree un Dockerfile basado en una imagen base de MaxCompute. Ejecute este comando:
vim DockerFile -
Agregue el siguiente contenido al 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 -
Compile la imagen desde el Dockerfile.
sudo docker build -f DockerFile -t <image_name>:<tag> .Parámetros:
image_name: El nombre de la imagen personalizada.
tag: La versión de la imagen personalizada.
Paso 4: Enviar la imagen a ACR
Inicie sesión en la consola de Container Registry y seleccione una región en la esquina superior izquierda.
En el panel de navegación izquierdo, seleccione Instances.
-
En la página Instances, haga clic en Create ACR EE. Si ya creó una instancia, puede omitir este paso.
ImportanteSolo puede cargar imágenes personalizadas en instancias Standard Edition o Premium Edition de ACR Enterprise Edition.
En la página Instances, busque la instancia de Enterprise Edition deseada y haga clic en Manage para abrir la página de descripción general de la instancia.
-
En el panel de navegación izquierdo, seleccione .
En la página Repository > Repositories, haga clic en Create Repository. En el cuadro de diálogo Create Repository, introduzca la siguiente información y haga clic en Next.
Parámetro
Obligatorio
Descripción
Region
Sí
La región de la instancia actual se completa automáticamente.
Namespace
Sí
Defina el namespace para el repositorio de imágenes. Esta configuración no se puede modificar posteriormente.
-
Se recomienda crear un namespace que corresponda a una empresa, organización o usuario individual, como
aliyun. -
No se recomienda crear un namespace que corresponda a un módulo o sistema, como
tomcatocentos.
Repository Name
Sí
El nombre debe tener entre 2 y 120 caracteres y puede contener letras minúsculas, números y los siguientes separadores: guiones bajos (_), guiones (-), puntos (.) y barras diagonales (/). El nombre no puede comenzar ni terminar con un separador.
Repository Type
No
-
Public: Para extraer una imagen pública, debe iniciar sesión en la instancia Enterprise Edition. Si desea permitir extracciones anónimas, habilite la configuración de extracción anónima pública para la instancia.
-
La extracción de una imagen privada de Enterprise Edition requiere iniciar sesión en una instancia Enterprise Edition con permisos de extracción.
-
El valor predeterminado es privada.
Tags
No
After selected, all tags other than the latest in the repository cannot be overwritten, ensuring the consistency of the container images.
Accelerated Image
No
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): Este modo proporciona alrededor del 70 % del efecto de aceleración del modo completo. La imagen acelerada representa aproximadamente el 3 % del tamaño de la imagen original. Se requieren unos 3 segundos para generar una imagen acelerada de 1 GB. Las capas que ya están indexadas no se vuelven a indexar.
Summary
Sí
Max. 100 characters
Description
No
Supports Markdown Format
-
-
Configure el origen del código:
Para Code Source, seleccione Local Repository y haga clic en Create Repository.
Para obtener más información, consulte Use an Enterprise Edition instance to build images.
-
Envíe la imagen personalizada a una instancia de ACR en la misma cuenta.
En la página Repository Repositories, haga clic en Manage en la columna Actions del repositorio deseado.
-
En el panel de navegación izquierdo, seleccione Details.
Siga las instrucciones en la sección Instructions on Images en la parte inferior de la página Details para enviar una imagen personalizada desde su entorno de Docker al repositorio de imágenes de Container Registry.
-
(Opcional) Si su máquina se encuentra en una VPC, realice los siguientes pasos:
Configure el control de acceso para que la VPC se conecte a la instancia Enterprise Edition. Para obtener más información, consulte Configure access over a VPC.
-
Cuando trabaje con una instancia de ACR Enterprise Edition en un entorno de Docker, debe agregar vpc al nombre de dominio. Por ejemplo, debe cambiar
acr-test-registry.cn-wulanchabu.cr.aliyuncs.comporacr-test-registry-vpc.cn-wulanchabu.cr.aliyuncs.com.$ docker login --username=***@test.aliyunid.com acr-test-registry.cn-wulanchabu.cr.aliyuncs.com
NotaSi ocurre un error al iniciar sesión en la instancia, compruebe si el acceso a la red pública está habilitado para el repositorio.
Paso 5: Agregar la imagen a MaxCompute
Asocie una imagen existente de ACR con MaxCompute para gestionar de forma centralizada sus imágenes de desarrollo.
Inicie sesión en la consola de MaxCompute y seleccione una región en la esquina superior izquierda.
En el panel de navegación izquierdo, elija .
En la página Images, haga clic en la pestaña Custom Image.
-
En la pestaña Custom Image, haga clic en Create Image. En el cuadro de diálogo Add Image, configure los siguientes parámetros:
NotaAl crear una imagen por primera vez, aparece el cuadro de diálogo MaxCompute Service-linked Role. Haga clic en OK. El sistema crea automáticamente un rol vinculado al servicio para acceder a los recursos de ACR.
Parámetro
Descripción
Image Name
Obligatorio. El nombre de la imagen personalizada. The image name must start with a lowercase letter, and can contain only lowercase letters, digits, hyphens (-), and underscores (_).
Este nombre se utiliza para hacer referencia a la imagen en MaxCompute SQL, PyODPS y MaxFrame.
Image Type
Obligatorio. El tipo de imagen de ACR. Solo se admiten imágenes de ACR Enterprise Edition.
Enterprise Edition Image Instance
Obligatorio. Seleccione la instancia Enterprise Edition que creó en ACR.
Image Namespace
Obligatorio. Seleccione el namespace de imagen que creó en ACR.
Image Repository
Obligatorio. Seleccione el repositorio de imágenes que creó en ACR.
Image Version
Obligatorio. Seleccione la versión de la imagen que cargó en ACR.
Image Description
Obligatorio. Agregue una descripción para la imagen.
Haga clic en OK. La nueva imagen personalizada aparecerá en la lista de imágenes personalizadas.
Paso 6: Usar la imagen
Las imágenes personalizadas pueden referenciarse en UDF de MaxCompute SQL, PyODPS y MaxFrame.
Cada trabajo solo puede especificar una imagen. Especificar más de una podría causar conflictos de imágenes.
-
Para UDF, utilice indicadores a nivel de sesión para especificar la imagen y la versión de Python. Ejemplo:
set odps.sql.python.version=cp37; set odps.session.image = <image_name>; -
Para PyODPS, utilice el parámetro
imagede los métodosexecuteopersistpara especificar la imagen. Ejemplo:NotaPara hacer referencia a una imagen en PyODPS, debe actualizar PyODPS a la versión V0.11.5 o posterior.
image='<image_name>' -
Para MaxFrame, utilice la siguiente configuración para especificar la imagen del trabajo:
config.options.sql.settings = { "odps.session.image": "<image_name>" }