Esercitazione: Creare un contenitore per la distribuzione in Istanze di contenitore di AzureTutorial: Create container for deployment to Azure Container Instances

Istanze di contenitore di Azure 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.Azure Container Instances enables deployment of Docker containers onto Azure infrastructure without provisioning any virtual machines or adopting a higher-level service. In questa esercitazione si inserisce una piccola applicazione Web Node.js in un'immagine del contenitore eseguibile con Istanze di contenitore di Azure.In this tutorial, you package a small Node.js web application into a container image that can be run using Azure Container Instances.

In questo articolo, che corrisponde alla seconda parte della serie, è possibile eseguire queste operazioni:In this article, part one of the series, you:

  • Clonare il codice sorgente dell'applicazione da GitHubClone application source code from GitHub
  • Creazione di un'immagine del contenitore dall'origine applicazioneCreate a container image from application source
  • Test dell'immagine in un ambiente Docker localeTest the image in a local Docker environment

Nella seconda e nella terza parte dell'esercitazione, l'immagine viene caricata in Registro contenitori di Azure e quindi distribuita in Istanze di contenitore di Azure.In tutorial parts two and three, you upload your image to Azure Container Registry, and then deploy it to Azure Container Instances.

Prima di iniziareBefore you begin

Per completare questa esercitazione, è necessario soddisfare i requisiti seguenti:You must satisfy the following requirements to complete this tutorial:

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.Azure CLI: You must have Azure CLI version 2.0.29 or later installed on your local computer. Eseguire az --version per trovare la versione.Run az --version to find the version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure 2.0.If you need to install or upgrade, see Install Azure CLI 2.0.

Docker: questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, come contenitori, immagini dei contenitore e comandi essenziali di docker.Docker: This tutorial assumes a basic understanding of core Docker concepts like containers, container images, and basic docker commands. Per una panoramica sui concetti fondamentali relativi a Docker e al contenitore, vedere Docker overview (Panoramica su Docker).For a primer on Docker and container basics, see the Docker overview.

Motore Docker: per completare questa esercitazione, è necessario che sia installato in locale il motore Docker.Docker Engine: To complete this tutorial, you need Docker Engine installed locally. Docker offre pacchetti che configurano l'ambiente Docker in macOS, Windows e Linux.Docker provides packages that configure the Docker environment on macOS, Windows, and 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.Because the Azure Cloud shell does not include the Docker daemon, you must install both the Azure CLI and Docker Engine on your local computer to complete this tutorial. Per questa esercitazione non è possibile usare Azure Cloud Shell.You cannot use the Azure Cloud Shell for this tutorial.

Ottenere il codice dell'applicazioneGet application code

L'applicazione di esempio di questa esercitazione è una semplice app Web creata in Node.js.The sample application in this tutorial is a simple web app built in Node.js. L'applicazione fornisce una pagina HTML statica e ha un aspetto simile allo screenshot seguente:The application serves a static HTML page, and looks similar to the following screenshot:

App dell'esercitazione visualizzata in un browser

Usare Git per clonare il repository dell'applicazione di esempio:Use Git to clone the sample application's repository:

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

È anche possibile scaricare l'archivio ZIP direttamente da GitHub.You can also download the ZIP archive from GitHub directly.

Compilare l'immagine del contenitoreBuild the container image

Il documento Dockerfile nell'applicazione di esempio illustra come viene compilato il contenitore.The Dockerfile in the sample application shows how the container is built. 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.It starts from an official Node.js image based on Alpine Linux, a small distribution that is well suited for use with containers. Copia quindi i file dell'applicazione nel contenitore, installa le dipendenze usando Node Package Manager e infine avvia l'applicazione.It then copies the application files into the container, installs dependencies using the Node Package Manager, and finally, starts the application.

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:Use the docker build command to create the container image and tag it as aci-tutorial-app:

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

L'output dal comando docker build sarà simile al seguente (troncato per una migliore leggibilità):Output from the docker build command is similar to the following (truncated for readability):

$ 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:Use the docker images command to see the built image:

docker images

L'immagine appena compilata verrà visualizzata nell'elenco:Your newly built image should appear in the list:

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

Eseguire il contenitore in localeRun the container locally

Prima di distribuire il contenitore in Istanze di contenitore di Azure, usare docker run per eseguirlo in locale e verificarne il funzionamento.Before you deploy the container to Azure Container Instances, use docker run to run it locally and confirm that it works. 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.The -d switch lets the container run in the background, while -p allows you to map an arbitrary port on your computer to port 80 in the container.

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:Output from the docker run command displays the running container's ID if the command was successful:

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

Passare quindi a http://localhost:8080 nel browser per verificare che il contenitore sia in esecuzione.Now, navigate to http://localhost:8080 in your browser to confirm that the container is running. Dovrebbe essere visualizzata una pagina Web simile alla seguente:You should see a web page similar to the following:

Esecuzione locale dell'app nel browser

Passaggi successiviNext steps

In questa esercitazione è stata creata un'immagine del contenitore distribuibile in Istanze di contenitore di Azure e ne è stata verificata l'esecuzione in locale.In this tutorial, you created a container image that can be deployed in Azure Container Instances, and verified that it runs locally. Finora, sono state eseguite le operazioni seguenti:So far, you've done the following:

  • Clonazione dell'origine applicazione da GitHubCloned the application source from GitHub
  • Creazione di un'immagine del contenitore dall'origine applicazioneCreated a container image from the application source
  • Test del contenitore in localeTested the container locally

Passare all'esercitazione successiva per apprendere come archiviare l'immagine del contenitore in Registro contenitori di Azure:Advance to the next tutorial in the series to learn about storing your container image in Azure Container Registry: