Självstudie: Skapa en containeravbildning för distribution till Azure Container Instances

Azure Container Instances möjliggör distribution av Docker-behållare till en Azure-infrastruktur utan att tillhandahålla några virtuella datorer eller anpassa eventuella tjänster på högre nivå. I den här självstudiekursen får du paketera ett enkelt Node.js-webbprogram i en behållaravbildning som kan köras med Azure Container Instances.

I den här artikeln, som är del ett i serien, får du göra följande:

  • Klona programmets källkod från GitHub
  • Skapa en containeravbildning från programkällan
  • Testa avbildningarna i en lokal Docker-miljö

I del två och tre av självstudiekursen får du överföra avbildningen till Azure Container Registry och sedan distribuera den till Azure Container Instances.

Innan du börjar

Du måste uppfylla följande krav för att kunna slutföra den här självstudiekursen:

Azure CLI: Du måste ha Azure CLI version 2.0.29 eller senare installerat på den lokala datorn. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa informationen i Installera Azure CLI.

Docker: Den här självstudiekursen förutsätter grundläggande kunskaper om grundläggande Docker-begrepp som containrar, containeravbildningar och grundläggande docker-kommandon. En introduktion till grunderna för Docker och containrar finns i Docker-översikt.

Docker: För att slutföra den här självstudien behöver du Docker installerat lokalt. Docker innehåller paket som konfigurerar Docker-miljön på macOS, Windows och Linux.

Viktigt

Eftersom Azure Cloud Shell inte innehåller Docker-daemon måste du installera både Azure CLI och Docker-motorn på din lokala dator för att kunna fullfölja den här självstudiekursen. Du kan använda Azure Cloud Shell för den här självstudiekursen.

Hämta programkod

Exempelprogrammet i den här självstudiekursen är en enkel webbapp som skapats i Node.js. Programmet har en statisk HTML-sida och ser ut ungefär som på följande skärmbild:

Självstudieappen visas i webbläsare

Använd Git om du vill klona exempelprogrammets lagringsplats:

git clone https://github.com/Azure-Samples/aci-helloworld.git

Du kan också hämta ZIP-arkivet från GitHub direkt.

Bygga containeravbildningen

Den Dockerfile som finns i exempelprogrammet visar hur containern är byggd. Den börjar från en officiell Node.js-avbildning baserat på Alpine Linux, en liten distribution som är lämplig för användning med containrar. Den kopierar sedan programfilerna till containern, installerar beroenden med Node Package Manager (nodpaketshanteraren) och startar slutligen programmet.

FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js

Använd kommandot docker build (dockerbygge) för att skapa containeravbildningen, och märk den som aci-tutorial-app:

docker build ./aci-helloworld -t aci-tutorial-app

Utdata från kommandot docker build (dockerbygge) liknar följande (trunkerat för läsbarhet):

docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon  119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
 ---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
 ---> Running in f4a1ea099eec
 ---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest

Använd kommandot dockeravbildning för att se den skapade avbildningen:

docker images

Den nya inbyggda avbildningen ska synas i listan:

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 seconds ago    68.1 MB

Kör containern lokalt

Innan du distribuerar behållaren till Azure Container Instances, så använd docker run så att du kan köra den lokalt och bekräfta att den fungerar. Med växeln -d kan du köra containern i bakgrunden, medan -p gör att du kan mappa en godtycklig port för dina beräkningar till port 80 i containern.

docker run -d -p 8080:80 aci-tutorial-app

Utdata från docker run-kommandot visar ID:t för den container som körs om kommandot lyckas:

docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf

Navigera nu till http://localhost:8080 i webbläsaren och bekräfta att containern körs. Du bör se en webbsida som liknar följande:

Köra appen lokalt i webbläsaren

Nästa steg

I den här självstudien har du skapat en behållaravbildning som kan distribueras i Azure Container Instances, och verifierat att den körs lokalt. Hittills har du gjort följande:

  • Klonade programkällan från GitHub
  • Skapat en containeravbildning från programkällkoden
  • Testade containern lokalt

Fortsätt till nästa självstudie i serien och lär dig hur du lagrar din behållaravbildning i Azure Container Registry: