Criar contêineres para reutilização

Utilize estas receitas de contentores para criar contentores Azure AI que podem ser reutilizados. Os contêineres podem ser criados com algumas ou todas as definições de configuração para que não sejam necessárias quando o contêiner for iniciado.

Depois que você tiver essa nova camada de contêiner (com as configurações) e a tiver testado localmente, armazene o contêiner em um registro de contêiner. Quando o contêiner for iniciado, ele só precisará dessas configurações que não estão armazenadas atualmente no contêiner. O contêiner de registro privado fornece espaço de configuração para você transmitir essas configurações.

Sintaxe de execução do Docker

Os exemplos de docker run deste documento pressupõem que você tenha um console do Windows com um caractere de continuação de linha ^. Considere o seguinte para seu uso:

  • não altere a ordem dos argumentos, a menos que você esteja familiarizado com contêineres do Docker.
  • Se você estiver usando um sistema operacional diferente do Windows ou um console diferente do console do Windows, use o console/o terminal, a sintaxe de pasta para montagens e o caractere de continuação de linha corretos para o console e o sistema. Como o contêiner dos Serviços de IA do Azure é um sistema operacional Linux, a montagem de destino usa uma sintaxe de pasta em estilo Linux.
  • Os exemplos de docker run usam o diretório fora da unidade c: para evitar conflitos de permissão no Windows. Se você precisar usar um diretório específico como o diretório de entrada, talvez seja necessário conceder ao Docker permissão de serviço.

Não armazenar definições de configuração na imagem

Os comandos docker run de exemplo para cada serviço não armazenam nenhuma definição de configuração no contêiner. Quando você inicia o contêiner por meio de um console ou um serviço de registro, essas definições de configuração precisam ser transmitidas. O contêiner de registro privado fornece espaço de configuração para você transmitir essas configurações.

Reutilização de receita: armazenar todas as definições de configuração com o contêiner

Para armazenar todas as definições de configuração, crie um Dockerfile com essas configurações.

Problemas com essa abordagem:

  • O novo contêiner tem um nome e uma marca separados do contêiner original.
  • Para alterar essas configurações, você precisará alterar os valores do Dockerfile, recompilar a imagem e publicá-la novamente no registro.
  • Se alguém obtiver acesso ao registro de contêiner ou ao host local, ele poderá executar o contêiner e usar os pontos de extremidade dos Serviços de IA do Azure.
  • Se o serviço de IA do Azure que você está usando não exigir montagens de entrada, não adicione as linhas COPY ao Dockerfile.

Crie o Dockerfile efetuando pull do contêiner existente de Serviços de IA do Azure que você deseja usar e use os comandos do Docker no Dockerfile para definir as informações necessárias para o contêiner ou efetuar pull delas.

Neste exemplo:

  • Define o ponto de extremidade de cobrança, {BILLING_ENDPOINT}, por meio da chave de ambiente do host usando ENV.
  • Define a chave de API de cobrança {ENDPOINT_KEY}, por meio da chave de ambiente do host usando `ENV.

Reutilização de receita: armazenar configurações de cobrança com o contêiner

Este exemplo mostra como criar o contêiner de sentimento do serviço de linguagem por meio de um Dockerfile.

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

Compile e execute o contêiner localmente ou no contêiner de registro privado, conforme necessário.

Reutilização de receita: armazenar as configurações de cobrança e montagem com o contêiner

Este exemplo mostra como usar o Reconhecimento vocal, salvando a cobrança e os modelos por meio do Dockerfile.

  • Copia o arquivo de modelo LUIS (Reconhecimento vocal) do sistema de arquivos do host usando COPY.
  • O contêiner do LUIS dá suporte a mais de um modelo. Se todos os modelos estiverem armazenados na mesma pasta, bastará uma instrução COPY.
  • Execute o arquivo do Docker no pai relativo do diretório de entrada do modelo. Para o exemplo a seguir, execute os comandos docker build e docker run no pai relativo de /input. O primeiro /input no comando COPY é o diretório do computador host. O segundo /input é o diretório do contêiner.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input

Compile e execute o contêiner localmente ou no contêiner de registro privado, conforme necessário.

Como usar o contêiner no host local

Para criar o arquivo do Docker, substitua <your-image-name> pelo novo nome da imagem e use:

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

Para executar a imagem e removê-la quando o contêiner for interrompido (--rm):

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

Como adicionar o contêiner ao registro privado

Siga estas etapas para usar o Dockerfile e colocar a nova imagem no registro de contêiner privado.

  1. Crie um Dockerfile com o texto da reutilização de receita. Um Dockerfile não tem uma extensão.

  2. Substitua os valores nos colchetes angulares por valores próprios.

  3. Integre o arquivo a uma imagem na linha de comando ou no terminal usando o comando a seguir. Substitua os valores nos colchetes angulares, <>, por uma marca ou um nome de contêiner próprios.

    A opção de marca, -t, é uma forma de adicionar informações sobre o que você alterou no contêiner. Por exemplo, um nome de contêiner modified-LUIS indica que o contêiner original foi colocado em camadas. Um nome de marca with-billing-and-model indica como o contêiner do LUIS (Reconhecimento vocal) foi modificado.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Entre na CLI do Azure por meio de um console. Este comando abrirá um navegador e exigirá a autenticação. Depois de autenticado, feche o navegador e continue trabalhando no console.

    az login
    
  5. Entre no seu registro privado com a CLI do Azure por meio de um console.

    Substitua os valores nos colchetes angulares, <my-registry>, por um nome de registro próprio.

    az acr login --name <my-registry>
    

    Você também poderá entrar com o logon do Docker se tiver recebido uma entidade de serviço.

    docker login <my-registry>.azurecr.io
    
  6. Marque o contêiner com a localização do registro privado. Substitua os valores nos colchetes angulares, <my-registry>, por um nome de registro próprio.

    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 você não usar um nome de marca, latest ficará implícito.

  7. Efetue push da nova imagem para o registro de contêiner privado. Quando você vir o registro de contêiner privado, o nome do contêiner usado no comando da CLI a seguir será o nome do repositório.

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

Próximas etapas

Criar e usar a Instância de Contêiner do Azure