Containers maken voor hergebruik
Gebruik deze containerrecepten om Cognitive Services containers te maken die opnieuw kunnen worden gebruikt. Containers kunnen worden gebouwd met sommige of alle configuratie-instellingen, zodat ze niet nodig zijn wanneer de container wordt gestart.
Zodra u deze nieuwe containerlaag (met instellingen) hebt en u deze lokaal hebt getest, kunt u de container opslaan in een containerregister. Wanneer de container wordt gestart, zijn 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
Voor docker run voorbeelden in dit document wordt ervan uit Windows console met een regel ^ vervolgteken. 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 mapsyntaxis voor de bevestigingen en het teken voor het vervolg van de regel voor uw console en systeem. Omdat de Cognitive Services container een Linux-besturingssysteem is, gebruikt de doel-mount een Linux-stijl mapsyntaxis.
docker runvoorbeelden gebruiken de map buiten hetc:station om machtigingsconflicten op de Windows. Als u een specifieke map als invoermap wilt gebruiken, moet u mogelijk de docker-servicemachtiging verlenen.
Geen configuratie-instellingen opslaan in afbeelding
De docker run voorbeeldopdrachten voor elke service slaan geen configuratie-instellingen op in de container. Wanneer u de container start vanuit een console of registerservice, moeten deze configuratie-instellingen worden door geven. 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 benadering:
- De nieuwe container heeft een afzonderlijke naam en tag van de oorspronkelijke container.
- Als u deze instellingen wilt wijzigen, moet u de waarden van de Dockerfile wijzigen, de afbeelding opnieuw bouwen en opnieuw publiceren naar het register.
- Als iemand toegang krijgt tot uw containerregister of lokale host, kan deze de container uitvoeren en de eindpunten Cognitive Services gebruiken.
- Als uw Cognitive Service geen invoer mounts vereist, moet u de regels niet toevoegen
COPYaan uw Dockerfile.
Maak Dockerfile, haal deze op uit de bestaande Cognitive Services-container die u wilt gebruiken en gebruik vervolgens docker-opdrachten in de Dockerfile om informatie in te stellen of op te halen die de container nodig heeft.
Dit voorbeeld:
- Hiermee stelt u het facturerings-eindpunt in vanaf
{BILLING_ENDPOINT}de omgevingssleutel van de host met behulp vanENV. - Hiermee stelt u de API-sleutel voor facturering in vanaf
{ENDPOINT_KEY}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 de container lokaal of vanuit uw persoonlijke registercontainer en voer deze zo nodig uit.
Recept opnieuw gebruiken: instellingen voor facturering en bevestiging opslaan met container
In dit voorbeeld ziet u hoe u Language Understanding gebruikt, waardoor facturering en modellen uit de Dockerfile worden op slaan.
- Kopieert het Language Understanding (LUIS)-modelbestand van het bestandssysteem van de host met behulp van
COPY. - De LUIS-container ondersteunt meer dan één model. Als alle modellen zijn opgeslagen in dezelfde map, hebt u allemaal één instructie
COPYnodig. - Voer het docker-bestand uit vanaf het relatieve bovenliggende bestand van de map voor modelinvoer. Voer voor het volgende voorbeeld de
docker buildopdrachten en uit vanaf het relatievedocker runbovenliggende van/input. De eerste/inputop de opdracht is de map van deCOPYhostcomputer. De tweede/inputis 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 de container lokaal of vanuit uw persoonlijke registercontainer en voer deze zo nodig uit.
Container op uw lokale host gebruiken
Als u het Docker-bestand wilt maken, vervangt <your-image-name> u door de nieuwe naam van de afbeelding en gebruikt u:
docker build -t <your-image-name> .
Om de afbeelding uit te voeren en te 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 afbeelding in uw persoonlijke containerregister te plaatsen.
Maak een
Dockerfilemet de tekst van het recept opnieuw gebruiken. ADockerfileheeft geen extensie.Vervang eventuele waarden tussen de hoekhaken door uw eigen waarden.
Bouw het bestand in een afbeelding op de opdrachtregel of terminal, met behulp van de volgende opdracht. Vervang de waarden tussen de hoekhaken, , 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 containernaam van geeft bijvoorbeeldmodified-LUISaan dat de oorspronkelijke container gelaagd is. De tagnaam geeftwith-billing-and-modelaan hoe de Language Understanding container (LUIS) 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. Na de verificatie kunt u de browser sluiten en doorgaan met werken in de -console.
az loginMeld u aan bij uw privéregister met Azure CLI vanuit een console.
Vervang de waarden tussen de hoekhaken,
<my-registry>, door uw eigen registernaam.az acr login --name <my-registry>U kunt zich ook aanmelden met docker-aanmelding als aan u een service-principal is toegewezen.
docker login <my-registry>.azurecr.ioTag de container met de locatie van het privéregister. Vervang de waarden tussen de hoekhaken,
<my-registry>, door 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, wordt
latestgeïmpliceerd.Push de nieuwe afbeelding naar uw privécontainerregister. Wanneer u uw privécontainerregister bekijkt, is de naam van de container 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>