Esercitazione: Creare un'immagine del contenitore per la distribuzione in Istanze di Azure Container

Istanze di Azure Container consente di eseguire la distribuzione di contenitori Docker nell'infrastruttura di Azure senza effettuare il provisioning di macchine virtuali o adottare un servizio di livello superiore. In questa esercitazione si inserisce una piccola applicazione Web Node.js in un'immagine del contenitore eseguibile con Istanze di Azure Container.

In questo articolo, che corrisponde alla seconda parte della serie, è possibile eseguire queste operazioni:

  • Clonare il codice sorgente dell'applicazione da GitHub
  • Creazione di un'immagine del contenitore dall'origine applicazione
  • Test dell'immagine in un ambiente Docker locale

Nella seconda e nella terza parte dell'esercitazione, l'immagine viene caricata in Registro Azure Container e quindi distribuita in Istanze di Azure Container.

Prima di iniziare

Per completare questa esercitazione, è necessario soddisfare i requisiti seguenti:

Interfaccia della riga di comando di Azure: è necessario che nel computer locale sia installata la versione 2.0.29 o successiva dell'interfaccia della riga di comando di Azure. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Docker: questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, tra cui contenitori, immagini dei contenitori e comandi docker di base. Per una panoramica dei concetti fondamentali relativi a Docker e ai contenitori, vedere Docker overview (Panoramica di Docker).

Docker: per completare questa esercitazione, è necessario installare Docker localmente. Docker offre pacchetti per la configurazione dell'ambiente Docker in macOS, Windows e Linux.

Importante

Poiché Azure Cloud Shell non include il daemon Docker, per completare questa esercitazione è necessario installare nel computer locale sia l'interfaccia della riga di comando di Azure che il motore Docker. Per questa esercitazione non è possibile usare Azure Cloud Shell.

Ottenere il codice dell'applicazione

L'applicazione di esempio di questa esercitazione è una semplice app Web creata in Node.js. L'applicazione fornisce una pagina HTML statica e ha un aspetto simile allo screenshot seguente:

App dell'esercitazione visualizzata nel browser

Usare Git per clonare il repository dell'applicazione di esempio:

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

È anche possibile scaricare l'archivio ZIP direttamente da GitHub.

Compilare l'immagine del contenitore

Il documento Dockerfile nell'applicazione di esempio illustra come viene compilato il contenitore. Viene avviato da un'immagine Node.js ufficiale basata su Alpine Linux, una distribuzione di piccole dimensioni particolarmente adatta per l'uso con i contenitori. Copia quindi i file dell'applicazione nel contenitore, installa le dipendenze usando Node Package Manager e infine avvia l'applicazione.

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

Usare il comando docker build per creare l'immagine del contenitore e assegnarle il tag aci-tutorial-app:

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

L'output dal comando docker build è simile al seguente (troncato per una migliore leggibilità):

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

Usare il comando docker images per visualizzare l'immagine compilata:

docker images

L'immagine appena compilata verrà visualizzata nell'elenco:

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

Eseguire il contenitore in locale

Prima di distribuire il contenitore in Istanze di Azure Container, usare docker run per eseguirlo in locale e verificarne il funzionamento. L'opzione -d consente di eseguire il contenitore in background, mentre -p consente di eseguire il mapping di una porta arbitraria del computer alla porta 80 del contenitore.

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

Se l'esecuzione del comando docker run è riuscita, il relativo output mostra l'ID del contenitore in esecuzione:

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

Passare quindi a http://localhost:8080 nel browser per verificare che il contenitore sia in esecuzione. Dovrebbe essere visualizzata una pagina Web simile alla seguente:

Esecuzione locale dell'app nel browser

Passaggi successivi

In questa esercitazione è stata creata un'immagine del contenitore distribuibile in Istanze di Azure Container e ne è stata verificata l'esecuzione in locale. Finora, sono state eseguite le operazioni seguenti:

  • Clonazione dell'origine applicazione da GitHub
  • Creazione di un'immagine del contenitore dall'origine applicazione
  • Test del contenitore in locale

Passare all'esercitazione successiva per apprendere come archiviare l'immagine del contenitore in Registro Azure Container: