Skapa containrar för återanvändning

Använd dessa containerrecept för att skapa Cognitive Services-containrar som kan återanvändas. Containrar kan byggas med vissa eller alla konfigurationsinställningar så att de inte behövs när containern startas.

När du har det här nya containerlagret (med inställningar) och du har testat det lokalt kan du lagra containern i ett containerregister. När containern startar behöver den bara de inställningar som för närvarande inte lagras i containern. Containern för det privata registret innehåller konfigurationsutrymme där du kan skicka dessa inställningar.

Syntax för Docker-körning

Alla docker run exempel i det här dokumentet förutsätter Windows en konsol med ett rad ^ fortsättningstecken. Tänk på följande för eget bruk:

  • Ändra inte ordningen på argumenten om du inte är bekant med Docker-containrar.
  • Om du använder ett annat operativsystem än Windows eller en annan konsol än Windows-konsolen använder du rätt konsol/terminal, mappsyntax för monteringar och rad fortsättningstecken för konsolen och systemet. Eftersom containern Cognitive Services Linux-operativsystem använder målmonteringen en mappsyntax i Linux-format.
  • docker runi exemplen används katalogen utanför c: enheten för att undvika behörighetskonflikter på Windows. Om du behöver använda en specifik katalog som indatakatalog kan du behöva ge Docker-tjänsten behörighet.

Lagra inga konfigurationsinställningar i avbildningen

docker runExempelkommandona för varje tjänst lagrar inte några konfigurationsinställningar i containern. När du startar containern från en konsol eller registertjänst måste dessa konfigurationsinställningar överföras. Containern för det privata registret innehåller konfigurationsutrymme där du kan skicka dessa inställningar.

Återanvänd recept: lagra alla konfigurationsinställningar med container

För att kunna lagra alla konfigurationsinställningar skapar du en Dockerfile med dessa inställningar.

Problem med den här metoden:

  • Den nya containern har ett separat namn och en annan tagg än den ursprungliga containern.
  • Om du vill ändra de här inställningarna måste du ändra värdena för Dockerfile, återskapa avbildningen och publicera den på nytt i registret.
  • Om någon får åtkomst till ditt containerregister eller din lokala värd kan de köra containern och använda Cognitive Services slutpunkterna.
  • Om Cognitive Service inte kräver indatamonteringar ska du inte lägga till raderna COPY i din Dockerfile.

Skapa Dockerfile, hämta från den befintliga Cognitive Services-containern som du vill använda och använd sedan docker-kommandon i Dockerfile för att ange eller hämta information som containern behöver.

Det här exemplet:

  • Anger faktureringsslutpunkten {BILLING_ENDPOINT} från värdens miljönyckel med hjälp av ENV .
  • Anger fakturerings-API-nyckeln {ENDPOINT_KEY} från värdens miljönyckel med hjälp av ENV.

Återanvänd recept: lagra faktureringsinställningar med container

Det här exemplet visar hur du skapar Language-tjänstens sentimentcontainer från en Dockerfile.

FROM mcr.microsoft.com/azure-cognitive-services/sentiment:latest
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept

Skapa och kör containern lokalt eller från din privata registercontainer efter behov.

Återanvänd recept: lagra fakturerings- och monteringsinställningar med container

Det här exemplet visar hur du använder Language Understanding, sparar fakturering och modeller från Dockerfile.

  • Kopierar Language Understanding (LUIS) från värdens filsystem med hjälp av COPY .
  • LUIS-containern stöder mer än en modell. Om alla modeller lagras i samma mapp behöver du alla en COPY -instruktion.
  • Kör docker-filen från det relativa överordnade objektet i modellens indatakatalog. I följande exempel kör du kommandona docker build och från den relativa överordnade delen av docker run /input . Den första /input i COPY kommandot är värddatorns katalog. Den andra /input är containerns katalog.
FROM <container-registry>/<cognitive-service-container-name>:<tag>
ENV billing={BILLING_ENDPOINT}
ENV apikey={ENDPOINT_KEY}
ENV EULA=accept
COPY /input /input

Skapa och kör containern lokalt eller från din privata registercontainer efter behov.

Så här använder du en container på din lokala värd

För att skapa Docker-filen <your-image-name> ersätter du med det nya namnet på avbildningen och använder sedan:

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

Köra avbildningen och ta bort den när containern stoppas ( --rm ):

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

Så här lägger du till en container i ett privat register

Följ de här stegen för att använda Dockerfile och placera den nya avbildningen i ditt privata containerregister.

  1. Skapa en Dockerfile med texten från återanvändning av recept. A Dockerfile har inte något tillägg.

  2. Ersätt alla värden i vinkelparenteserna med dina egna värden.

  3. Skapa filen i en avbildning på kommandoraden eller terminalen med hjälp av följande kommando. Ersätt värdena i vinkelparenteserna, <> , med ditt eget containernamn och tagg.

    Taggalternativet , -t är ett sätt att lägga till information om vad du har ändrat för containern. Containernamnet anger till exempel att modified-LUIS den ursprungliga containern har skiktats. Taggnamnet anger with-billing-and-model hur LUIS-containern (Language Understanding) har ändrats.

    docker build -t <your-new-container-name>:<your-new-tag-name> .
    
  4. Logga in på Azure CLI från en konsol. Det här kommandot öppnar en webbläsare och kräver autentisering. När du har autentiserats kan du stänga webbläsaren och fortsätta arbeta i konsolen.

    az login
    
  5. Logga in på ditt privata register med Azure CLI från en konsol.

    Ersätt värdena i vinkelparenteserna, <my-registry> , med ditt eget registernamn.

    az acr login --name <my-registry>
    

    Du kan också logga in med Docker-inloggning om du har tilldelats ett huvudnamn för tjänsten.

    docker login <my-registry>.azurecr.io
    
  6. Tagga containern med den privata registerplatsen. Ersätt värdena i vinkelparenteserna, <my-registry> , med ditt eget registernamn.

    docker tag <your-new-container-name>:<your-new-tag-name> <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

    Om du inte använder ett taggnamn är det latest underförstått.

  7. Push-skicka den nya avbildningen till ditt privata containerregister. När du visar ditt privata containerregister är det containernamn som används i följande CLI-kommando namnet på lagringsplatsen.

    docker push <my-registry>.azurecr.io/<your-new-container-name-in-registry>:<your-new-tag-name>
    

Nästa steg