Creare contenitori per il riutilizzo

Usare queste ricette dei contenitori per creare contenitori di Azure AI che possano essere riutilizzati. I contenitori possono essere compilati con alcune o tutte le impostazioni di configurazione in modo che non siano necessarie al momento dell’avvio del contenitore.

Dopo aver ottenuto questo nuovo livello di contenitore (con le impostazioni) e averlo testato localmente, il contenitore può essere archiviato in un registro contenitori. All'avvio del contenitore, saranno necessarie solo le impostazioni che non sono attualmente archiviate nel contenitore. Il contenitore del registro privato fornisce lo spazio di configurazione per trasferire tali impostazioni.

Sintassi di esecuzione di Docker

Qualsiasi esempio docker run in questo documento presuppone l’uso di una console che esegue Windows con un carattere di continuazione della riga ^. Tenere in considerazione quanto segue per uso personale:

  • Non modificare l'ordine degli argomenti se non si ha dimestichezza con i contenitori Docker.
  • Se si esegue un sistema operativo diverso da Windows o una console diversa dalla console di Windows, utilizzare la console/il terminale, la sintassi della cartella per i montaggi e il carattere di continuazione della riga corretti per la console e il sistema. Poiché il contenitore Servizi di Azure AI è un sistema operativo Linux, il montaggio di destinazione utilizza una sintassi di cartella in stile Linux.
  • Negli esempi docker run si utilizza una directory esterna all'unità c: per prevenire eventuali conflitti di autorizzazioni in Windows. Se è necessario usare una directory specifica come directory di input, potrebbe essere necessario concedere l'autorizzazione per il servizio Docker.

Non archiviare alcuna impostazione di configurazione nell'immagine

I comandi docker run di esempio per ciascun servizio non archiviano impostazioni di configurazione nel contenitore. Quando si avvia il contenitore da un servizio di console o registro, tali impostazioni di configurazione devono essere trasferite. Il contenitore del registro privato fornisce lo spazio di configurazione per trasferire tali impostazioni.

Riutilizzare la ricetta: archiviare tutte le impostazioni di configurazione con il contenitore

Per archiviare tutte le impostazioni di configurazione, creare un Dockerfile con tali impostazioni.

Problemi correlati a questo approccio:

  • Il nuovo contenitore ha un nome e un tag separati dal contenitore originale.
  • Per modificare queste impostazioni, sarà necessario modificare i valori del Dockerfile, ricompilare l'immagine e pubblicare nuovamente nel registro.
  • Se un utente ottiene l'accesso al registro contenitori o all'host locale, può eseguire il contenitore e utilizzare gli endpoint di Servizi di Azure AI.
  • Se il Servizio di Azure AI in uso non richiede montaggi di input, non aggiungere le righe COPY al Dockerfile.

Creare il Dockerfile, eseguire il pull dal contenitore di Servizi di Azure AI esistente che si desidera utilizzare, quindi con i comandi Docker nel Dockerfile impostare o estrarre le informazioni che richiede il contenitore.

Questo esempio:

  • Imposta l'endpoint di fatturazione, {BILLING_ENDPOINT} dalla chiave ambiente dell'host utilizzando ENV.
  • Imposta la chiave API di fatturazione, {ENDPOINT_KEY} dalla chiave ambiente dell'host utilizzando ENV.

Riutilizzare la ricetta: archiviare le impostazioni di fatturazione con il contenitore

Questo esempio illustra come compilare il contenitore valutazione del servizio di linguaggio da un 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 privato in base alle esigenze.

Riutilizzare la ricetta: archiviare le impostazioni di fatturazione e montaggio con il contenitore

In questo esempio si spiega come usare Language Understanding, salvando la fatturazione e i modelli dal Dockerfile.

  • Copia il file del modello di Language Understanding (LUIS) dal file system dell'host utilizzando COPY.
  • Il contenitore LUIS supporta più di un modello. Se tutti i modelli vengono archiviati nella stessa cartella, è necessaria un'unica istruzione COPY.
  • Eseguire il file docker dall’elemento padre relativo della directory di input del modello. Per l'esempio seguente, eseguire i comandi docker build e docker run dall'elemento padre relativo di /input. Il primo /input nel comando COPY è la directory del computer host. Il secondo /input è la directory del contenitore.
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 privato in base alle esigenze.

Come utilizzare il contenitore nell'host locale

Per compilare il file Docker, sostituire <your-image-name> con il nuovo nome dell'immagine, quindi utilizzare:

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

Per eseguire l'immagine e rimuoverla quando il contenitore si arresta (--rm):

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

Come aggiungere un contenitore al registro privato

Eseguire questi passaggi per utilizzare il Dockerfile e inserire la nuova immagine nel registro contenitori privato.

  1. Creare un Dockerfile con il testo dalla ricetta di riutilizzo. Un oggetto Dockerfile non ha un'estensione.

  2. Sostituire tutti i valori nelle parentesi angolari con valori personalizzati.

  3. Compilare il file in un’immagine nella riga di comando o nel terminale, utilizzando il comando seguente. Sostituire i valori nelle parentesi angolari, <>, con il nome e il tag del contenitore.

    L'opzione tag, -t, consente di aggiungere informazioni sulle modifiche apportate al contenitore. Ad esempio, il nome di contenitore modified-LUIS indica che il contenitore originale è stato suddiviso in più livelli. Il nome di tag with-billing-and-model, indica come è stato modificato il contenitore Language Understanding (LUIS).

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Accedere all'interfaccia della riga di comando di Azure da una console. Questo comando consente di aprire un browser e richiede l'autenticazione. Una volta ottenuta l'autenticazione, è possibile chiudere il browser e continuare a lavorare nella console.

    az login
    
  5. Accedere al registro privato con l'interfaccia della riga di comando di Azure da una console.

    Sostituire i valori nelle parentesi angolari, <my-registry>, con il nome del registro.

    az acr login --name <my-registry>
    

    È anche possibile accedere con l'account di accesso docker è stata assegnata un'entità servizio.

    docker login <my-registry>.azurecr.io
    
  6. Assegnare un tag al contenitore con la posizione del registro privato. Sostituire i valori nelle parentesi angolari, <my-registry>, con il nome del 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>
    

    Se non si usa un nome di tag, latest è implicito.

  7. Eseguire il push della nuova immagine nel registro contenitori privato. Quando si visualizza il registro contenitori privato, il nome del contenitore usato nel comando dell'interfaccia della riga di comando seguente, sarà il nome del repository.

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

Passaggi successivi

Creare e usare un’istanza di contenitore di Azure