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 unidadec:
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 usandoENV
. - 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
edocker run
no pai relativo de/input
. O primeiro/input
no comandoCOPY
é 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.
Crie um
Dockerfile
com o texto da reutilização de receita. UmDockerfile
não tem uma extensão.Substitua os valores nos colchetes angulares por valores próprios.
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êinermodified-LUIS
indica que o contêiner original foi colocado em camadas. Um nome de marcawith-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> .
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
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
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.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>