Containers maken voor hergebruik

Gebruik deze containerrecepten om Azure AI-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 deze lokaal hebt getest, kunt u de container opslaan in een containerregister. Wanneer de container wordt gestart, heeft deze alleen de instellingen nodig die momenteel niet in de container zijn opgeslagen. De privéregistercontainer biedt configuratieruimte waar u deze instellingen kunt doorgeven.

Syntaxis van Docker-uitvoering

Voor alle docker run voorbeelden in dit document wordt ervan uitgegaan dat er een Windows-console is met een ^ regelvervolgteken. Houd rekening met het volgende voor eigen gebruik:

  • Wijzig de volgorde van de argumenten alleen als 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 juiste mapsyntaxis voor koppelingen en het regelvolgteken voor uw console en systeem. Omdat de Azure AI Services-container een Linux-besturingssysteem is, gebruikt de doelkoppeling een mapsyntaxis in Linux-stijl.
  • docker run in voorbeelden wordt de map van het c: station gebruikt om eventuele machtigingsconflicten in Windows te voorkomen. Als u een specifieke map als invoermap wilt 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 waar 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 aparte 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 persoon de container uitvoeren en de Eindpunten van azure AI-services gebruiken.
  • Als de Azure AI-service die u gebruikt geen invoerkoppelingen vereist, voegt u de COPY regels niet toe aan uw Dockerfile.

Maak Dockerfile, haal deze op uit de bestaande Azure AI-servicescontainer 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 factureringseindpunt in op {BILLING_ENDPOINT} basis van de omgevingssleutel van de host met behulp van ENV.
  • Hiermee stelt u de facturerings-API-sleutel, {ENDPOINT_KEY} 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 Taalservice 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 indien nodig uit.

Recept opnieuw gebruiken: facturerings- en koppelinstellingen opslaan met container

In dit voorbeeld ziet u hoe u Language Understanding gebruikt, waarbij facturering en modellen uit de Dockerfile worden opgeslagen.

  • 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 item van de modelinvoermap. Voer voor het volgende voorbeeld de docker build opdrachten en docker run uit van het relatieve bovenliggende element van /input. De eerste /input op de COPY opdracht is de map van de 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 de container lokaal of vanuit uw persoonlijke registercontainer en voer deze indien nodig uit.

Container gebruiken op uw lokale host

Als u het Docker-bestand wilt maken, vervangt u door <your-image-name> de nieuwe naam van de installatiekopieën en gebruikt u:

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

De installatiekopieën uitvoeren en verwijderen wanneer de container stopt (--rm):

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

Een container toevoegen aan een privéregister

Volg deze stappen om het Dockerfile te gebruiken en de nieuwe installatiekopieën in uw privécontainerregister te plaatsen.

  1. Maak een Dockerfile met de tekst van het recept voor hergebruik. Een Dockerfile heeft geen extensie.

  2. Vervang eventuele waarden in de punthaken door uw eigen waarden.

  3. Bouw het bestand in een installatiekopie op de opdrachtregel of terminal met behulp van de volgende opdracht. Vervang de waarden in de punthaken, <>, door uw eigen containernaam en -tag.

    De tagoptie, -t, is een manier om informatie toe te voegen over wat u hebt gewijzigd voor de container. Een containernaam van modified-LUIS geeft bijvoorbeeld aan dat de oorspronkelijke container gelaagd is. Een tagnaam van with-billing-and-model geeft aan hoe de container Language Understanding (LUIS) is gewijzigd.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Meld u aan bij Azure CLI vanaf een console. Met deze opdracht wordt een browser geopend en is verificatie vereist. Zodra de verificatie is uitgevoerd, kunt u de browser sluiten en doorgaan met werken in de console.

    az login
    
  5. Meld u aan bij uw persoonlijke register met Azure CLI vanaf een console.

    Vervang de waarden in de punthaken, <my-registry>, door uw eigen registernaam.

    az acr login --name <my-registry>
    

    U kunt zich ook aanmelden met docker-aanmelding als er een service-principal aan u is toegewezen.

    docker login <my-registry>.azurecr.io
    
  6. Tag de container met de locatie van het privéregister. Vervang de waarden in de punthaken, <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, latest wordt dit geïmpliceerd.

  7. Push de nieuwe installatiekopieën naar uw privécontainerregister. Wanneer u uw persoonlijke 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>
    

Volgende stappen

Azure Container Instance maken en gebruiken