Creación de contenedores para su reutilización

Use estas recetas de contenedor para crear contenedores de Azure AI que se pueden reutilizar. Los contenedores pueden crearse con algunos o todos los valores de configuración para que no sean necesarios cuando se inicia el contenedor.

Una vez que crea esta nueva capa de contenedor (con la configuración) y la ha probado localmente, puede almacenar el contenedor en un registro de contenedor. Cuando se inicia el contenedor, solo necesita los valores de configuración que no están almacenados actualmente en el contenedor. El contenedor de registro privado ofrece espacio de configuración para que pueda pasar esos valores de configuración.

Sintaxis de Docker run

Todos los ejemplos de docker run en este documento suponen el uso de una consola de Windows con un carácter de continuación de línea ^. Tenga en cuenta lo siguiente para su propio uso:

  • No cambie el orden de los argumentos a menos que esté muy familiarizado con los contenedores de Docker.
  • Si usa un sistema operativo distinto de Windows o una consola que no sea la de Windows, use la consola o terminal correctos, la sintaxis de carpeta para montajes y el carácter de continuación de línea para su consola y sistema. Dado que el contenedor de servicios de Azure AI es un sistema operativo Linux, el montaje de destino usa una sintaxis de carpeta basada en Linux.
  • Los ejemplos de docker run usan el directorio que está en la unidad c: para evitar conflictos con los permisos de Windows. Si necesita usar un directorio específico como directorio de entrada, tal vez tenga que conceder permiso al servicio de Docker.

Imágenes sin valores de configuración almacenados

Los comandos docker run de ejemplo para cada servicio no almacenan los valores de configuración en el contenedor. Cuando se inicia el contenedor desde un servicio de registro o de consola, se deben pasar esos valores de configuración. El contenedor de registro privado ofrece espacio de configuración para que pueda pasar esos valores de configuración.

Reutilización de fórmulas: almacenamiento de todos los valores de configuración con el contenedor

Para almacenar todos los valores de configuración, cree un Dockerfile con dichos valores.

Problemas con este procedimiento:

  • El contenedor nuevo tiene un nombre y una etiqueta diferentes a los del contenedor original.
  • Para cambiar esta configuración, tendrá que cambiar los valores del Dockerfile, volver a generar la imagen y volver a publicarla en el registro.
  • Si alguien obtiene acceso al registro de contenedor o al host local, esa persona puede ejecutar el contenedor y usar los puntos de conexión de los servicios de Azure AI.
  • Si el servicio de Azure AI que usa no requiere montajes de entrada, no agregue las líneas COPY al Dockerfile.

Cree el Dockerfile, extráigalo del contenedor de servicios de Azure AI existente que quiere usar y, a continuación, use los comandos de docker del Dockerfile para establecer o extraer la información que el contenedor necesita.

En este ejemplo:

  • El punto de conexión de facturación ({BILLING_ENDPOINT}) se establece a partir de la clave de entorno del host con ENV.
  • La clave de API de facturación ({ENDPOINT_KEY}) se establece a partir de la clave de entorno del host con `ENV.

Reutilización fórmulas: almacenamiento de la configuración de facturación con el contenedor

En este ejemplo se muestra cómo crear el contenedor de opiniones del servicio Language a partir de un Dockerfile.

FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept

Compile y ejecute el contenedor localmente o desde el contenedor del registro privado según sea necesario.

Reutilización de fórmulas: almacenamiento de la configuración de facturación y montaje con el contenedor

Este ejemplo muestra cómo usar Language Understanding para guardar la facturación y modelos del archivo Dockerfile.

  • Se copia el archivo de modelo Language Understanding desde el sistema de archivos del host mediante COPY.
  • El contenedor de LUIS admite más de un modelo. Si todos los modelos se almacenan en la misma carpeta, solo se necesita una instrucción COPY.
  • Ejecute el archivo de docker desde el elemento primario relativo del directorio de entrada del modelo. El ejemplo siguiente, ejecute los comandos docker build y docker run desde el elemento primario relativo de /input. El primer /input en el comando COPY es el directorio del equipo host. El segundo /input es el directorio del contenedor.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input

Compile y ejecute el contenedor localmente o desde el contenedor del registro privado según sea necesario.

Procedimiento para usar el contenedor en el host local

Para compilar el archivo de Docker, reemplace <your-image-name> con el nuevo nombre de la imagen y después use:

docker build -t <your-image-name> .

Para ejecutar la imagen y quitarla cuando se detiene el contenedor (--rm):

docker run --rm <your-image-name>

Procedimiento para agregar el contenedor en el registro privado

Siga estos pasos para usar el archivo Dockerfile y colocar la nueva imagen en el registro de contenedor privado.

  1. Cree un archivo Dockerfile con el texto de la fórmula de reutilización. Un archivo Dockerfile no tiene extensión.

  2. Reemplace los valores de los corchetes angulares con sus propios valores.

  3. Compile el archivo en una imagen en la línea de comandos o un terminal con el siguiente comando. Reemplace los valores de los corchetes angulares (<>) con su propio nombre y etiqueta de contenedor.

    La opción de etiqueta (-t) es una forma de agregar información sobre lo que ha cambiado en el contenedor. Por ejemplo, un nombre de contenedor modified-LUIS indica que el contenedor original ahora tiene capas. Un nombre de etiqueta with-billing-and-model indica con qué método se ha modificado el contenedor de Language Understanding.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Inicie sesión en la CLI de Azure desde una consola. Este comando abre un explorador y requiere autenticación. Una vez autenticado, puede cerrar el explorador y seguir trabajando en la consola.

    az login
    
  5. Inicie sesión en su registro privado con la CLI de Azure desde una consola.

    Reemplace los valores de los corchetes angulares (<my-registry>) con su propio nombre de registro.

    az acr login --name <my-registry>
    

    También puede iniciar sesión con el inicio de sesión de docker si está asignado como entidad de servicio.

    docker login <my-registry>.azurecr.io
    
  6. Etiquetar el contenedor con la ubicación del registro privado. Reemplace los valores de los corchetes angulares (<my-registry>) con su propio nombre de registro.

    docker tag <your-new-container-name>:<your-new-tag-name> <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

    Si no usa un nombre de etiqueta, latest está implícito.

  7. Inserte la imagen nueva en el registro de contenedor privado. Cuando visualice el registro de contenedor privado, el nombre de contenedor utilizado en el siguiente comando CLI será el nombre del repositorio.

    docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

Pasos siguientes

Creación y uso de Azure Container Instances