Esercitazione: Creare immagini del contenitore su un cluster Linux di Service FabricTutorial: Create container images on a Linux Service Fabric cluster

Questa esercitazione è la prima parte di una serie di esercitazioni in cui viene illustrato come usare i contenitori in un cluster Linux di Service Fabric.This tutorial is part one of a tutorial series that demonstrates how to use containers in a Linux Service Fabric cluster. In questa esercitazione si prepara un'applicazione di più contenitori per l'uso in Service Fabric.In this tutorial, a multi-container application is prepared for use with Service Fabric. Nelle esercitazioni successive, queste immagini vengono usate come parte di un'applicazione di Service Fabric.In subsequent tutorials, these images are used as part of a Service Fabric application. In questa esercitazione si apprenderà come:In this tutorial you learn how to:

  • Clonare l'origine applicazione da GitHubClone application source from GitHub
  • Creare un'immagine del contenitore dall'origine applicazioneCreate a container image from the application source
  • Distribuire un'istanza di Registro Azure ContainerDeploy an Azure Container Registry (ACR) instance
  • Assegnare tag a un'immagine del contenitore per Registro Azure ContainerTag a container image for ACR
  • Caricare l'immagine in Registro Azure ContainerUpload the image to ACR

In questa serie di esercitazioni si apprenderà come:In this tutorial series, you learn how to:

PrerequisitiPrerequisites

  • Configurare l'ambiente di sviluppo Linux di Service Fabric.Linux development environment set up for Service Fabric. Seguire le istruzioni qui per configurare l'ambiente Linux.Follow the instructions here to set up your Linux environment.
  • Questa esercitazione richiede l'interfaccia della riga di comando di Azure 2.0.4 o versioni successive.This tutorial requires that you are running the Azure CLI version 2.0.4 or later. 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.If you need to install or upgrade, see Install the Azure CLI.
  • Inoltre, richiede la presenza di una sottoscrizione di Azure disponibile.Additionally, it requires that you have an Azure subscription available. Per ulteriori informazioni su una versione di valutazione gratuita, passare qui.For more information on a free trial version, go here.

Ottenere il codice dell'applicazioneGet application code

L'applicazione di esempio usata in questa esercitazione è un'app di voto.The sample application used in this tutorial is a voting app. L'applicazione è costituita da un componente Web front-end e un'istanza Redis back-end.The application consists of a front-end web component and a back-end Redis instance. I componenti sono inseriti in pacchetti nelle immagini del contenitore.The components are packaged into container images.

Usare git per scaricare una copia dell'applicazione per l'ambiente di sviluppo.Use git to download a copy of the application to your development environment.

git clone https://github.com/Azure-Samples/service-fabric-containers.git

cd service-fabric-containers/Linux/container-tutorial/

La soluzione contiene due cartelle e un file docker-compose.yml.The solution contains two folders and a 'docker-compose.yml' file. La cartella 'azure-vote' contiene il servizio front-end Python unitamente al Dockerfile usato per creare l'immagine.The 'azure-vote' folder contains the Python frontend service along with the Dockerfile used to build the image. La directory 'Voting' contiene il pacchetto dell'applicazione Service Fabric che viene distribuito nel cluster.The 'Voting' directory contains the Service Fabric application package that is deployed to the cluster. Queste directory contengono le risorse necessarie per questa esercitazione.These directories contain the necessary assets for this tutorial.

Creare immagini del contenitoreCreate container images

All'interno della directory azure-vote eseguire il comando seguente per creare l'immagine per il componente Web front-end.Inside the azure-vote directory, run the following command to build the image for the front-end web component. Questo comando usa il Dockerfile in questa directory per creare l'immagine.This command uses the Dockerfile in this directory to build the image.

docker build -t azure-vote-front .

Nota

Se si riceve un messaggio di autorizzazione negata, seguire le istruzioni contenute in questa documentazione per usare Docker senza Sudo.If you are getting permission denied then follow this documentation on how to work with docker without sudo.

L'esecuzione di questo comando può richiedere tempo perché è necessario eseguire il pull di tutte le dipendenze necessarie da Hub Docker.This command can take some time since all the necessary dependencies need to be pulled from Docker Hub. Al termine usare il comando docker images per vedere le immagini create.When completed, use the docker images command to see the created images.

docker images

Si noti che sono state scaricate o create due immagini.Notice that two images have been downloaded or created. L'immagine azure-vote-front contiene l'applicazione.The azure-vote-front image contains the application. È stata ottenuta da un'immagine python dall'Hub Docker.It was derived from a python image from Docker Hub.

REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
azure-vote-front             latest              052c549a75bf        About a minute ago   708MB
tiangolo/uwsgi-nginx-flask   python3.6           590e17342131        5 days ago           707MB

Distribuire Registro Azure ContainerDeploy Azure Container Registry

Eseguire per prima cosa il comando az login per accedere al proprio account Azure.First run the az login command to log in to your Azure account.

az login

Successivamente, usare il comando az account per scegliere la sottoscrizione per creare il registro contenitori di Azure.Next, use the az account command to choose your subscription to create the Azure Container registry. Sostituire <subscription_id> con l'ID della sottoscrizione di Azure.You have to enter the subscription ID of your Azure subscription in place of <subscription_id>.

az account set --subscription <subscription_id>

Prima di distribuire un'istanza di Registro Azure Container, è necessario che esista un gruppo di risorse.When deploying an Azure Container Registry, you first need a resource group. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.An Azure resource group is a logical container into which Azure resources are deployed and managed.

Creare un gruppo di risorse con il comando az group create.Create a resource group with the az group create command. In questo esempio viene creato un gruppo di risorse denominato myResourceGroup nell'area westus.In this example, a resource group named myResourceGroup is created in the westus region.

az group create --name <myResourceGroup> --location westus

Creare un'istanza di Registro Azure Container con il comando az acr create.Create an Azure Container registry with the az acr create command. Sostituire <acrName> con il nome del registro contenitori da creare nella sottoscrizione.Replace <acrName> with the name of the container registry you want to create under your subscription. Questo nome deve essere alfanumerico e univoco.This name must be alphanumeric and unique.

az acr create --resource-group <myResourceGroup> --name <acrName> --sku Basic --admin-enabled true

Nella parte restante di questa esercitazione si usa "acrName" come segnaposto per il nome del registro contenitori scelto.Throughout the rest of this tutorial, we use "acrName" as a placeholder for the container registry name that you chose. Prendere nota di questo valore.Please make note of this value.

Accedere al registro contenitoriLog in to your container registry

Accedere all'istanza di Registro Azure Container prima di eseguire il push di immagini in essa.Log in to your ACR instance before pushing images to it. Usare il comando az acr login per completare l'operazione.Use the az acr login command to complete the operation. Specificare il nome univoco assegnato al registro contenitori al momento della creazione.Provide the unique name given to the container registry when it was created.

az acr login --name <acrName>

Al termine, il comando restituisce un messaggio di accesso riuscito.The command returns a 'Login Succeeded’ message once completed.

Assegnare tag alle immagini del contenitoreTag container images

Ogni immagine del contenitore deve essere contrassegnata con il nome del server di accesso del registro.Each container image needs to be tagged with the loginServer name of the registry. Questo tag viene usato per il routing quando si esegue il push delle immagini del contenitore nel registro delle immagini.This tag is used for routing when pushing container images to an image registry.

Per visualizzare un elenco di immagini correnti, usare il comando docker images.To see a list of current images, use the docker images command.

docker images

Output:Output:

REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
azure-vote-front             latest              052c549a75bf        About a minute ago   708MB
tiangolo/uwsgi-nginx-flask   python3.6           590e17342131        5 days ago           707MB

Per ottenere il nome loginServer, eseguire questo comando:To get the loginServer name, run the following command:

az acr show --name <acrName> --query loginServer --output table

Viene visualizzata una tabella come i risultati seguenti.This outputs a table with the following results. Questo risultato verrà usato per contrassegnare l'immagine azure-vote-front prima di eseguirne il push nel registro contenitori nel passaggio successivo.This result will be used to tag your azure-vote-front image before pushing it to the container registry in the next step.

Result
------------------
<acrName>.azurecr.io

Applicare ora all'immagine azure-vote-front il tag loginServer del registro contenitori.Now, tag the azure-vote-front image with the loginServer of your container registry. Aggiungere anche :v1 alla fine del nome dell'immagine.Also, add :v1 to the end of the image name. Questo tag indica la versione dell'immagine.This tag indicates the image version.

docker tag azure-vote-front <acrName>.azurecr.io/azure-vote-front:v1

Una volta applicato il tag, eseguire 'docker images' per verificare l'operazione.Once tagged, run 'docker images' to verify the operation.

Output:Output:

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front                       latest              052c549a75bf        23 minutes ago      708MB
<acrName>.azurecr.io/azure-vote-front   v1                  052c549a75bf       23 minutes ago      708MB
tiangolo/uwsgi-nginx-flask             python3.6           590e17342131        5 days ago          707MB

Eseguire il push delle immagini nel registroPush images to registry

Eseguire il push dell'immagine azure-vote-front nel registro.Push the azure-vote-front image to the registry.

Nell'esempio seguente sostituire il nome del loginServer di Registro Azure Container con il loginServer dell'ambiente in uso.Using the following example, replace the ACR loginServer name with the loginServer from your environment.

docker push <acrName>.azurecr.io/azure-vote-front:v1

I comandi di esecuzione del push di docker richiedono un paio di minuti per il completamento.The docker push commands take a couple of minutes to complete.

Elencare le immagini nel registroList images in registry

Per restituire un elenco di immagini di cui è stato eseguito il push in Registro Azure Container, usare il comando az acr repository list.To return a list of images that have been pushed to your Azure Container registry, use the az acr repository list command. Aggiornare il comando con il nome dell'istanza di Registro Azure Container.Update the command with the ACR instance name.

az acr repository list --name <acrName> --output table

Output:Output:

Result
----------------
azure-vote-front

Al termine dell'esercitazione, l'immagine del contenitore sarà stata archiviata in un'istanza privata di Registro Azure Container.At tutorial completion, the container image has been stored in a private Azure Container Registry instance. Questa immagine verrà distribuita da Registro Azure Container a un cluster Service Fabric nelle esercitazioni successive.This image is deployed from ACR to a Service Fabric cluster in subsequent tutorials.

Passaggi successiviNext steps

In questa esercitazione, è stato effettuato il pull di un'applicazione da Github e sono state create immagini del contenitore ed è stato eseguito il push a un registro di sistema.In this tutorial, an application was pulled from GitHub and container images were created and pushed to a registry. Sono stati completati i passaggi seguenti:The following steps were completed:

  • Clonare l'origine applicazione da GitHubClone application source from GitHub
  • Creare un'immagine del contenitore dall'origine applicazioneCreate a container image from the application source
  • Distribuire un'istanza di Registro Azure ContainerDeploy an Azure Container Registry (ACR) instance
  • Assegnare tag a un'immagine del contenitore per Registro Azure ContainerTag a container image for ACR
  • Caricare l'immagine in Registro Azure ContainerUpload the image to ACR

Passare all'esercitazione successiva per ulteriori informazioni sulla creazione di pacchetti di contenitori in un'applicazione di Service Fabric usando Yeoman.Advance to the next tutorial to learn about packaging containers into a Service Fabric application using Yeoman.