Criar contentores para reutilização
Utilize estas receitas de contentor para criar contentores de IA do Azure que podem ser reutilizados. Os contentores podem ser criados com algumas ou todas as definições de configuração para que não sejam necessários quando o contentor é iniciado.
Assim que tiver esta nova camada de contentor (com definições) e a tiver testado localmente, pode armazenar o contentor num registo de contentor. Quando o contentor for iniciado, apenas precisará das definições que não estão atualmente armazenadas no contentor. O contentor do registo privado fornece espaço de configuração para transmitir essas definições.
Sintaxe de execução do Docker
Todos os docker run
exemplos neste documento assumem uma consola do Windows com um ^
caráter de continuação de linha. Considere o seguinte para sua própria utilização:
- Não altere a ordem dos argumentos, a menos que esteja muito familiarizado com os contentores do Docker.
- Se estiver a utilizar um sistema operativo diferente do Windows ou uma consola diferente da consola do Windows, utilize a consola/terminal correta, a sintaxe da pasta para montagens e o caráter de continuação de linha para a consola e o sistema. Uma vez que o contentor dos serviços de IA do Azure é um sistema operativo Linux, a montagem de destino utiliza uma sintaxe de pasta de estilo Linux.
docker run
Os exemplos utilizam o diretório fora dac:
unidade para evitar conflitos de permissões no Windows. Se precisar de utilizar um diretório específico como diretório de entrada, poderá ter de conceder a permissão do serviço docker.
Não armazenar definições de configuração na imagem
Os comandos de exemplo docker run
para cada serviço não armazenam quaisquer definições de configuração no contentor. Quando inicia o contentor a partir de uma consola ou serviço de registo, essas definições de configuração têm de ser transmitidas. O contentor do registo privado fornece espaço de configuração para transmitir essas definições.
Reutilizar receita: armazenar todas as definições de configuração com o contentor
Para armazenar todas as definições de configuração, crie uma Dockerfile
com essas definições.
Problemas com esta abordagem:
- O novo contentor tem um nome e etiqueta separados do contentor original.
- Para alterar estas definições, terá de alterar os valores do Dockerfile, reconstruir a imagem e voltar a publicar no seu registo.
- Se alguém obtiver acesso ao seu registo de contentor ou ao seu anfitrião local, pode executar o contentor e utilizar os pontos finais dos serviços do Azure AI.
- Se o serviço de IA do Azure que está a utilizar não necessitar de montagens de entrada, não adicione as
COPY
linhas ao dockerfile.
Crie o Dockerfile, extraia do contentor de serviços do Azure AI existente que pretende utilizar e, em seguida, utilize comandos do Docker no Dockerfile para definir ou solicitar informações de que o contentor precisa.
Este exemplo:
- Define o ponto final de faturação a
{BILLING_ENDPOINT}
partir da chave de ambiente do anfitrião comENV
. - Define a chave de API de faturação a
{ENDPOINT_KEY}
partir da chave de ambiente do anfitrião com "ENV.
Reutilizar receita: armazenar as definições de faturação com o contentor
Este exemplo mostra como criar o contentor de sentimentos do serviço Idioma a partir de um Dockerfile.
FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
Crie e execute o contentor localmente ou a partir do seu contentor de registo privado , conforme necessário.
Reutilizar receita: armazenar definições de faturação e montagem com contentor
Este exemplo mostra como utilizar Language Understanding, guardando a faturação e os modelos do Dockerfile.
- Copia o ficheiro de modelo Language Understanding (LUIS) do sistema de ficheiros do anfitrião com
COPY
. - O contentor luis suporta mais do que um modelo. Se todos os modelos estiverem armazenados na mesma pasta, todos precisam de uma
COPY
instrução. - Execute o ficheiro docker a partir do elemento principal relativo do diretório de entrada do modelo. Para o exemplo seguinte, execute os
docker build
comandos edocker run
a partir do elemento principal relativo de/input
. O primeiro/input
noCOPY
comando é o diretório do computador anfitrião. O segundo/input
é o diretório do contentor.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input
Crie e execute o contentor localmente ou a partir do seu contentor de registo privado , conforme necessário.
Como utilizar o contentor no seu anfitrião local
Para criar o ficheiro do Docker, substitua <your-image-name>
pelo novo nome da imagem e, em seguida, utilize:
docker build -t <your-image-name> .
Para executar a imagem e removê-la quando o contentor parar (--rm
):
docker run --rm <your-image-name>
Como adicionar um contentor ao registo privado
Siga estes passos para utilizar o Dockerfile e colocar a nova imagem no seu registo de contentor privado.
Crie um
Dockerfile
com o texto da receita de reutilização. ADockerfile
não tem uma extensão.Substitua quaisquer valores entre parênteses angulares pelos seus próprios valores.
Crie o ficheiro numa imagem na linha de comandos ou no terminal com o seguinte comando. Substitua os valores entre parênteses angulares,
<>
, pelo seu próprio nome de contentor e etiqueta.A opção de etiqueta,
-t
, é uma forma de adicionar informações sobre o que alterou para o contentor. Por exemplo, um nome de contentor demodified-LUIS
indica que o contentor original foi colocado em camadas. Um nome de etiqueta dewith-billing-and-model
indica como o contentor Language Understanding (LUIS) foi modificado.docker build -t <your-new-container-name>:<your-new-tag-name> .
Inicie sessão na CLI do Azure a partir de uma consola. Este comando abre um browser e requer autenticação. Depois de autenticado, pode fechar o browser e continuar a trabalhar na consola do .
az login
Inicie sessão no seu registo privado com a CLI do Azure a partir de uma consola.
Substitua os valores entre parênteses angulares,
<my-registry>
, pelo seu próprio nome de registo.az acr login --name <my-registry>
Também pode iniciar sessão com o início de sessão do Docker se lhe for atribuído um principal de serviço.
docker login <my-registry>.azurecr.io
Identifique o contentor com a localização do registo privado. Substitua os valores entre parênteses angulares,
<my-registry>
, pelo seu próprio nome de registo.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 não utilizar um nome de etiqueta,
latest
está implícito.Envie a nova imagem para o seu registo de contentor privado. Quando vir o seu registo de contentor privado, o nome do contentor utilizado no seguinte comando da CLI será o nome do repositório.
docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>