Creare contenitori per il riutilizzoCreate containers for reuse

Usare queste ricette contenitore per creare contenitori di servizi cognitivi che possono essere riutilizzati.Use these container recipes to create Cognitive Services Containers that can be reused. I contenitori possono essere compilati con alcune o tutte le impostazioni di configurazione in modo che non siano necessarie quando il contenitore viene avviato.Containers can be built with some or all configuration settings so that they are not needed when the container is started.

Quando si dispone di questo nuovo livello di contenitore (con impostazioni) ed è stato testato localmente, è possibile archiviare il contenitore in un registro contenitori.Once you have this new layer of container (with settings), and you have tested it locally, you can store the container in a container registry. Quando il contenitore viene avviato, saranno necessarie solo le impostazioni non attualmente archiviate nel contenitore.When the container starts, it will only need those settings that are not currently stored in the container. Il contenitore del registro di sistema privato fornisce spazio di configurazione in cui è possibile passare tali impostazioni.The private registry container provides configuration space for you to pass those settings in.

Sintassi di Docker RunDocker run syntax

Tutti gli esempi di docker run in questo documento presuppongono una console di Windows con un carattere di continuazione di riga ^.Any docker run examples in this document assume a Windows console with a ^ line continuation character. Tenere presente quanto segue per uso personale:Consider the following for your own use:

  • Non modificare l'ordine degli argomenti se non si ha dimestichezza con i contenitori Docker.Do not change the order of the arguments unless you are very familiar with docker containers.
  • Se si utilizza un sistema operativo diverso da Windows o una console diversa dalla console di Windows, utilizzare la console/terminale, la sintassi di cartella per i montaggi e il carattere di continuazione di riga corretti per la console e il sistema.If you are using an operating system other than Windows, or a console other than Windows console, use the correct console/terminal, folder syntax for mounts, and line continuation character for your console and system. Poiché il contenitore di servizi cognitivi è un sistema operativo Linux, il montaggio di destinazione usa una sintassi di cartella di tipo Linux.Because the Cognitive Services container is a Linux operating system, the target mount uses a Linux-style folder syntax.
  • docker run esempi utilizzare la directory dall'unità c: per evitare conflitti di autorizzazione in Windows.docker run examples use the directory off the c: drive to avoid any permission conflicts on Windows. Se è necessario usare una directory specifica come directory di input, potrebbe essere necessario concedere l'autorizzazione per il servizio Docker.If you need to use a specific directory as the input directory, you may need to grant the docker service permission.

Archivia nessuna impostazione di configurazione nell'immagineStore no configuration settings in image

L'esempio docker run comandi per ogni servizio non archivia le impostazioni di configurazione nel contenitore.The example docker run commands for each service do not store any configuration settings in the container. Quando si avvia il contenitore da un servizio console o registro di sistema, le impostazioni di configurazione devono essere passate.When you start the container from a console or registry service, those configuration settings need to pass in. Il contenitore del registro di sistema privato fornisce spazio di configurazione in cui è possibile passare tali impostazioni.The private registry container provides configuration space for you to pass those settings in.

Riutilizza la ricetta: archivia tutte le impostazioni di configurazione con il contenitoreReuse recipe: store all configuration settings with container

Per archiviare tutte le impostazioni di configurazione, creare una Dockerfile con tali impostazioni.In order to store all configuration settings, create a Dockerfile with those settings.

Problemi con questo approccio:Issues with this approach:

  • Il nuovo contenitore ha un nome e un tag separati dal contenitore originale.The new container has a separate name and tag from the original container.
  • Per modificare queste impostazioni, sarà necessario modificare i valori di Dockerfile, ricompilare l'immagine e ripubblicarla nel registro.In order to change these settings, you will have to change the values of the Dockerfile, rebuild the image, and republish to your registry.
  • Se un utente ottiene l'accesso al registro contenitori o all'host locale, può eseguire il contenitore e usare gli endpoint di servizi cognitivi.If someone gets access to your container registry or your local host, they can run the container and use the Cognitive Services endpoints.
  • Se il servizio cognitivo non richiede montaggi di input, non aggiungere le righe COPY alla Dockerfile.If your Cognitive Service doesn't require input mounts, don't add the COPY lines to your Dockerfile.

Creare Dockerfile, effettuando il pull dal contenitore di servizi cognitivi esistente che si vuole usare, quindi usare i comandi di Docker nel Dockerfile per impostare o inserire le informazioni necessarie per il contenitore.Create Dockerfile, pulling from the existing Cognitive Services container you want to use, then use docker commands in the Dockerfile to set or pull in information the container needs.

Questo esempio:This example:

  • Imposta l'endpoint di fatturazione {BILLING_ENDPOINT} dalla chiave dell'ambiente dell'host utilizzando ENV.Sets the billing endpoint, {BILLING_ENDPOINT} from the host's environment key using ENV.
  • Imposta la chiave API di fatturazione {ENDPOINT_KEY} dalla chiave dell'ambiente dell'host usando ' ENV '.Sets the billing API-key, {ENDPOINT_KEY} from the host's environment key using `ENV.

Riutilizza la ricetta: archivia le impostazioni di fatturazione con il contenitoreReuse recipe: store billing settings with container

Questo esempio illustra come creare il contenitore di valutazione di Analisi del testo ' da un Dockerfile.This example shows how to build the Text Analytics' sentiment container from a Dockerfile.

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

Compilare ed eseguire il contenitore localmente o dal contenitore del registro di sistema privato in base alle esigenze.Build and run the container locally or from your private registry container as needed.

Riutilizza la ricetta: archivia le impostazioni di fatturazione e montaggio con il contenitoreReuse recipe: store billing and mount settings with container

Questo esempio illustra come usare Language Understanding, salvando la fatturazione e i modelli dal Dockerfile.This example shows how to use Language Understanding, saving billing and models from the Dockerfile.

  • Copia il file del modello di Language Understanding (LUIS) dall'file system dell'host utilizzando COPY.Copies the Language Understanding (LUIS) model file from the host's file system using COPY.
  • Il contenitore LUIS supporta più di un modello.The LUIS container supports more than one model. Se tutti i modelli sono archiviati nella stessa cartella, è necessario disporre di un'istruzione COPY.If all models are stored in the same folder, you all need one COPY statement.
  • Eseguire il file Docker dall'elemento padre relativo della directory di input del modello.Run the docker file from the relative parent of the model input directory. Per l'esempio seguente, eseguire i comandi docker build e docker run dal padre relativo di /input.For the following example, run the docker build and docker run commands from the relative parent of /input. Il primo /input nel comando COPY è la directory del computer host.The first /input on the COPY command is the host computer's directory. Il secondo /input è la directory del contenitore.The second /input is the container's directory.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input

Compilare ed eseguire il contenitore localmente o dal contenitore del registro di sistema privato in base alle esigenze.Build and run the container locally or from your private registry container as needed.

Come usare un contenitore nell'host localeHow to use container on your local host

Per compilare il file Docker, sostituire <your-image-name> con il nuovo nome dell'immagine, quindi usare:To build the Docker file, replace <your-image-name> with the new name of the image, then use:

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

Per eseguire l'immagine e rimuoverla quando il contenitore si arresta (--rm):To run the image, and remove it when the container stops (--rm):

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

Come aggiungere un contenitore al registro privatoHow to add container to private registry

Seguire questa procedura per usare Dockerfile e inserire la nuova immagine nel registro contenitori privato.Follow these steps to use the Dockerfile and place the new image in your private container registry.

  1. Creare una Dockerfile con il testo dalla ricetta per il riutilizzo.Create a Dockerfile with the text from reuse recipe. Un Dockerfile non dispone di un'estensione.A Dockerfile doesn't have an extension.

  2. Sostituire i valori nelle parentesi acute con i valori personalizzati.Replace any values in the angle brackets with your own values.

  3. Compilare il file in un'immagine nella riga di comando o nel terminale, usando il comando seguente.Build the file into an image at the command line or terminal, using the following command. Sostituire i valori tra parentesi acute, <>, con il nome del contenitore e il tag.Replace the values in the angle brackets, <>, with your own container name and tag.

    L'opzione Tag, -t, è un modo per aggiungere informazioni su ciò che è stato modificato per il contenitore.The tag option, -t, is a way to add information about what you have changed for the container. Ad esempio, un nome di contenitore modified-LUIS indica che il contenitore originale è stato sovrapposto.For example, a container name of modified-LUIS indicates the original container has been layered. Il nome di un tag with-billing-and-model indica il modo in cui il contenitore di Language Understanding (LUIS) è stato modificato.A tag name of with-billing-and-model indicates how the Language Understanding (LUIS) container has been modified.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Accedere all'interfaccia della riga di comando di Azure da una console.Sign in to Azure CLI from a console. Questo comando apre un browser ed è richiesta l'autenticazione.This command opens a browser and requires authentication. Una volta autenticato, è possibile chiudere il browser e continuare a lavorare nella console.Once authenticated, you can close the browser and continue working in the console.

    az login
    
  5. Accedere al registro privato con l'interfaccia della riga di comando di Azure da una console.Sign in to your private registry with Azure CLI from a console.

    Sostituire i valori tra parentesi acute, <my-registry>, con il proprio nome del registro di sistema.Replace the values in the angle brackets, <my-registry>, with your own registry name.

    az acr login --name <my-registry>
    

    È anche possibile accedere con Docker login se viene assegnata un'entità servizio.You can also sign in with docker login if you are assigned a service principal.

    docker login <my-registry>.azurecr.io
    
  6. Contrassegnare il contenitore con il percorso del registro di sistema privato.Tag the container with the private registry location. Sostituire i valori tra parentesi acute, <my-registry>, con il proprio nome del registro di sistema.Replace the values in the angle brackets, <my-registry>, with your own registry name.

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

    Se non si usa un nome di tag, latest è implicito.If you don't use a tag name, latest is implied.

  7. Eseguire il push della nuova immagine nel registro contenitori privato.Push the new image to your private container registry. Quando si Visualizza il registro contenitori privato, il nome del contenitore usato nel comando CLI seguente sarà il nome del repository.When you view your private container registry, the container name used in the following CLI command will be the name of the repository.

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

Passaggi successiviNext steps