Containers maken voor hergebruik
Gebruik deze containerrecepten om Azure AI-containers te maken die opnieuw kunnen worden gebruikt. Containers kunnen worden gebouwd met enkele of alle configuratie-instellingen, zodat ze niet nodig zijn wanneer de container wordt gestart.
Zodra u deze nieuwe containerlaag (met instellingen) hebt en deze lokaal hebt getest, kunt u de container opslaan in een containerregister. Wanneer de container wordt gestart, hebt u alleen de instellingen nodig die momenteel niet in de container zijn opgeslagen. De privéregistercontainer biedt configuratieruimte waarin u deze instellingen kunt doorgeven.
Docker-runsyntaxis
In alle docker run
voorbeelden in dit document wordt ervan uitgegaan dat een Windows-console met een ^
regelvervolgingsteken wordt gebruikt. Houd rekening met het volgende voor uw eigen gebruik:
- Wijzig de volgorde van de argumenten niet, tenzij u bekend bent met docker-containers.
- Als u een ander besturingssysteem dan Windows of een andere console dan Windows-console gebruikt, gebruikt u de juiste console/terminal, de syntaxis van de map voor koppels en het regelvervolgteken voor uw console en systeem. Omdat de Azure AI Services-container een Linux-besturingssysteem is, maakt de doelkoppeling gebruik van de syntaxis van een map in Linux-stijl.
docker run
Voorbeelden gebruiken de map van hetc:
station om machtigingsconflicten in Windows te voorkomen. Als u een specifieke map als invoermap moet gebruiken, moet u mogelijk de docker-servicemachtiging verlenen.
Geen configuratie-instellingen opslaan in installatiekopieën
In de voorbeeldopdrachten docker run
voor elke service worden geen configuratie-instellingen in de container opgeslagen. Wanneer u de container start vanuit een console- of registerservice, moeten deze configuratie-instellingen worden doorgegeven. De privéregistercontainer biedt configuratieruimte waarin u deze instellingen kunt doorgeven.
Recept opnieuw gebruiken: alle configuratie-instellingen opslaan met container
Als u alle configuratie-instellingen wilt opslaan, maakt u een Dockerfile
met deze instellingen.
Problemen met deze aanpak:
- De nieuwe container heeft een afzonderlijke naam en tag van de oorspronkelijke container.
- Als u deze instellingen wilt wijzigen, moet u de waarden van het Dockerfile wijzigen, de installatiekopieën opnieuw opbouwen en opnieuw publiceren naar uw register.
- Als iemand toegang krijgt tot uw containerregister of uw lokale host, kan deze de container uitvoeren en de Azure AI-services-eindpunten gebruiken.
- Als voor de Azure AI-service die u gebruikt geen invoerkoppelingen nodig zijn, voegt u de
COPY
regels niet toe aan uw Dockerfile.
Maak Dockerfile, pulling uit de bestaande Azure AI-servicescontainer die u wilt gebruiken en gebruik vervolgens Docker-opdrachten in het Dockerfile om informatie in te stellen of op te halen die de container nodig heeft.
Dit voorbeeld:
- Hiermee stelt u het factureringseindpunt in op
{BILLING_ENDPOINT}
basis van de omgevingssleutel van de host.ENV
- Hiermee stelt u de facturerings-API-sleutel in op
{ENDPOINT_KEY}
basis van de omgevingssleutel van de host met behulp van ENV.
Recept opnieuw gebruiken: factureringsinstellingen opslaan met container
In dit voorbeeld ziet u hoe u de sentimentcontainer van de Language-service bouwt vanuit een Dockerfile.
FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
Bouw en voer de container lokaal of vanuit uw privéregistercontainer uit, indien nodig.
Recept opnieuw gebruiken: facturerings- en koppelinstellingen opslaan met container
In dit voorbeeld ziet u hoe u Language Understanding gebruikt, facturering en modellen opslaat vanuit het Dockerfile.
- Kopieert het LUIS-modelbestand (Language Understanding) uit het bestandssysteem van de host met behulp van
COPY
. - De LUIS-container ondersteunt meer dan één model. Als alle modellen in dezelfde map zijn opgeslagen, hebt u allemaal één
COPY
instructie nodig. - Voer het docker-bestand uit vanaf het relatieve bovenliggende element van de modelinvoermap. Voer in het volgende voorbeeld de
docker build
endocker run
opdrachten uit van het relatieve bovenliggende element van/input
. De eerste/input
op de opdracht is de map van deCOPY
hostcomputer. De tweede/input
is de map van de container.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input
Bouw en voer de container lokaal of vanuit uw privéregistercontainer uit, indien nodig.
Container gebruiken op uw lokale host
Als u het Docker-bestand wilt bouwen, vervangt u deze door <your-image-name>
de nieuwe naam van de installatiekopieën en gebruikt u:
docker build -t <your-image-name> .
Als u de installatiekopieën wilt uitvoeren en deze wilt verwijderen wanneer de container stopt (--rm
):
docker run --rm <your-image-name>
Container toevoegen aan privéregister
Volg deze stappen om het Dockerfile te gebruiken en de nieuwe installatiekopieën in uw privécontainerregister te plaatsen.
Maak een
Dockerfile
met de tekst van het hergebruik van recept. ADockerfile
heeft geen extensie.Vervang eventuele waarden in de punthaken door uw eigen waarden.
Bouw het bestand in een installatiekopie op de opdrachtregel of terminal met behulp van de volgende opdracht. Vervang de waarden in de punthaken door
<>
de naam en tag van uw eigen container.De tagoptie,
-t
is een manier om informatie toe te voegen over wat u voor de container hebt gewijzigd. Een containernaammodified-LUIS
geeft bijvoorbeeld aan dat de oorspronkelijke container gelaagd is. Een tagnaam vanwith-billing-and-model
geeft aan hoe de Luis-container (Language Understanding) is gewijzigd.docker build -t <your-new-container-name>:<your-new-tag-name> .
Meld u aan bij Azure CLI vanuit een console. Met deze opdracht wordt een browser geopend en is verificatie vereist. Nadat u bent geverifieerd, kunt u de browser sluiten en doorgaan met werken in de console.
az login
Meld u aan bij uw privéregister met Azure CLI vanuit een console.
Vervang de waarden in de punthaken door
<my-registry>
uw eigen registernaam.az acr login --name <my-registry>
U kunt zich ook aanmelden met docker-aanmelding als u een service-principal hebt toegewezen.
docker login <my-registry>.azurecr.io
Tag de container met de locatie van het privéregister. Vervang de waarden in de punthaken door
<my-registry>
uw eigen registernaam.docker tag <your-new-container-name>:<your-new-tag-name> <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
Als u geen tagnaam gebruikt,
latest
wordt dit geïmpliceerd.Push de nieuwe installatiekopieën naar uw privécontainerregister. Wanneer u uw privécontainerregister bekijkt, is de containernaam die wordt gebruikt in de volgende CLI-opdracht de naam van de opslagplaats.
docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>