Skapa containrar för återanvändning
Använd dessa containerrecept för att skapa Azure AI-containrar som kan återanvändas. Containrar kan skapas 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. Den privata registercontainern tillhandahåller konfigurationsutrymme som du kan använda för att skicka in inställningarna.
Docker-körningssyntax
Alla docker run
exempel i det här dokumentet förutsätter en Windows-konsol med ett ^
radfortsättningstecken. Överväg följande för eget bruk:
- Ändra inte ordningen på argumenten om du inte är mycket 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 radfortsättningstecken för konsolen och systemet. Eftersom Azure AI-tjänstcontainern är ett Linux-operativsystem använder målmonteringen en mappsyntax i Linux-stil.
docker run
exempel använder katalogen utanförc:
enheten för att undvika eventuella behörighetskonflikter i Windows. Om du behöver använda en specifik katalog som indatakatalog kan du behöva bevilja docker-tjänsten behörighet.
Lagra inga konfigurationsinställningar i avbildningen
docker run
Exempelkommandona 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 skickas in. Den privata registercontainern tillhandahåller konfigurationsutrymme som du kan använda för att skicka in inställningarna.
Återanvänd recept: lagra alla konfigurationsinställningar med container
För att 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 tagg frå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 om den i registret.
- Om någon får åtkomst till ditt containerregister eller din lokala värd kan de köra containern och använda Azure AI-tjänstslutpunkterna.
- Om Azure AI-tjänsten som du använder inte kräver indatamonteringar ska du inte lägga till raderna i
COPY
Dockerfile.
Skapa Dockerfile, hämta från den befintliga Azure AI-tjänstcontainer 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 avENV
. - Anger API-nyckeln för fakturering från
{ENDPOINT_KEY}
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 språktjä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 och sparar fakturering och modeller från Dockerfile.
- Kopierar LUIS-modellfilen (Language Understanding) från värdens filsystem med .
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 den relativa överordnade katalogen för modellens indatakatalog. I följande exempel kör du kommandona
docker build
ochdocker run
från den relativa överordnade i/input
. Det första/input
kommandotCOPY
ä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 containern på den lokala värden
Om du vill skapa Docker-filen ersätter du <your-image-name>
med det nya namnet på avbildningen och använder sedan:
docker build -t <your-image-name> .
Så här kör du avbildningen och tar bort den när containern stoppas (--rm
):
docker run --rm <your-image-name>
Så här lägger du till container i det privata registret
Följ dessa steg för att använda Dockerfile och placera den nya avbildningen i ditt privata containerregister.
Skapa en
Dockerfile
med texten från återanvändningsreceptet. ADockerfile
har inget tillägg.Ersätt alla värden inom vinkelparenteserna med dina egna värden.
Skapa filen till en avbildning på kommandoraden eller terminalen med hjälp av följande kommando. Ersätt värdena i vinkelparenteserna,
<>
, med ditt eget containernamn och din egen tagg.Taggalternativet ,
-t
är ett sätt att lägga till information om vad du har ändrat för containern. Ett containernamnmodified-LUIS
för anger till exempel att den ursprungliga containern har lagerats. Ett taggnamn förwith-billing-and-model
anger hur LUIS-containern (Language Understanding) har ändrats.docker build -t <your-new-container-name>:<your-new-tag-name> .
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
Logga in på ditt privata register med Azure CLI från en konsol.
Ersätt värdena inom 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 tjänstens huvudnamn.
docker login <my-registry>.azurecr.io
Tagga containern med den privata registerplatsen. Ersätt värdena inom 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
latest
är det underförstått.Skicka den nya avbildningen till ditt privata containerregister. När du visar ditt privata containerregister är containernamnet 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>