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.
Operazioni preliminari
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. Per trovare la versione, eseguire az --version
. 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, come contenitori, immagini dei contenitore e comandi essenziali di docker
. Per una panoramica dei concetti fondamentali relativi a Docker e ai contenitori, vedere Docker overview (Panoramica di Docker).
Docker: per completare questa esercitazione, è necessario aver installato 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:
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 piccola distribuzione particolarmente indicata 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 dovrebbe essere 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. Verrà visualizzata una pagina Web simile alla schermata seguente:
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 stati completati i passaggi 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: