Tutorial: Creación de imágenes de contenedor en un clúster de Service Fabric de Linux

Este tutorial es la primera parte de una serie de tutoriales en los que se muestra cómo usar los contenedores en un clúster de Service Fabric en Linux. En este tutorial, se prepara una aplicación con varios contenedores para usarla con Service Fabric. En los tutoriales posteriores, estas imágenes se usan como parte de una aplicación de Service Fabric. En este tutorial, aprenderá a:

  • Clonar el origen de la aplicación de GitHub
  • Crear una imagen de contenedor a partir del origen de la aplicación
  • Implementar una instancia de Azure Container Registry (ACR)
  • Etiquetar una imagen de contenedor para ACR
  • Cargar la imagen a ACR

En esta serie de tutoriales, se aprende a:

Prerequisites

  • Configuración del entorno de desarrollo de Linux para Service Fabric. Siga las instrucciones que se indican aquí para configurar el entorno de Linux.
  • Para realizar este tutorial es necesario que ejecute la versión 2.0.4 o superior de la CLI de Azure. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.
  • Además, requiere que tenga una suscripción de Azure disponible. Para obtener más información sobre una versión de evaluación gratuita, vaya aquí.

Obtención del código de la aplicación

La aplicación de ejemplo que se usa en este tutorial es una aplicación para votar. La aplicación consta de un componente web front-end y de una instancia back-end de Redis. Los componentes se empaquetan en imágenes de contenedor.

Use git para descargar una copia de la aplicación en su entorno de desarrollo.

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

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

La solución contiene dos carpetas y un archivo "docker-compose.yml". La carpeta "azure-vote" contiene el servicio de front-end de Python junto con el Dockerfile que se usa para generar la imagen. El directorio "Voting" contiene el paquete de aplicación de Service Fabric que se implementa en el clúster. Estos directorios contienen los recursos necesarios para este tutorial.

Creación de imágenes de contenedor

En el directorio azure-vote, ejecute el siguiente comando para generar la imagen para el componente web de front-end. Este comando usa el archivo Dockerfile de este directorio para generar la imagen.

docker build -t azure-vote-front .

Nota:

Si se deniega su permiso, siga esta documentación sobre cómo trabajar con Docker sin sudo.

Este comando puede tardar algún tiempo porque todas las dependencias necesarias tienen que extraerse de Docker Hub. Cuando haya finalizado, use el comando docker images para ver la imagen azure-vote-front que acaba de crear.

docker images

Implementación de Azure Container Registry

Primero, ejecute el comando az login para iniciar sesión en su cuenta de Azure.

az login

A continuación, use el comando az account para elegir la suscripción para crear Azure Container Registry. Tendrá que escribir el identificador de suscripción de su suscripción de Azure en lugar de <subscription_id>.

az account set --subscription <subscription_id>

Para implementar Azure Container Registry, necesita tener antes un grupo de recursos. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.

Para crear un grupo de recursos, use el comando az group create. En este ejemplo, se crea un grupo de recursos denominado myResourceGroup en la región westus.

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

Cree una instancia de Azure Container Registry con el comando az acr create. Reemplace <acrName> por el nombre del registro de contenedor que quiera crear en su suscripción. Este nombre debe ser alfanumérico y único.

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

En el resto de este tutorial, usamos "acrName" como un marcador de posición para el nombre del registro del contenedor que eligió. Anote este valor.

Inicio de sesión en el registro de contenedor

Inicie sesión en la instancia de ACR antes de insertar imágenes en ella. Use el comando az acr login para completar la operación. Proporcione el nombre único que se especificó para el registro de contenedor cuando se creó.

az acr login --name <acrName>

Al finalizar, el comando devuelve un mensaje que indica que el inicio de sesión se ha realizado correctamente.

Etiquetado de imágenes de contenedor

Es preciso etiquetar cada imagen de contenedor con el nombre loginServer del registro. Esta etiqueta se usa para el enrutamiento al insertar imágenes de contenedor en un registro de imágenes.

Para ver una lista de imágenes actual, use el comando docker images.

docker images

Salida:

REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
azure-vote-front             latest              052c549a75bf        About a minute ago   913MB

Para obtener el nombre de loginServer, ejecute el comando siguiente:

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

Esta acción genera una tabla con los siguientes resultados. Este resultado se usará para etiquetar la imagen azure-vote-front antes de insertarla en el registro de contenedor en el paso siguiente.

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

Ahora, etiquete la imagen azure-vote-front con el loginServer de su registro de contenedor. Además, agregue :v1 al final del nombre de la imagen. Esta etiqueta indica la versión de la imagen.

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

Una vez etiquetada, ejecute "docker images" para comprobar la operación.

Salida:

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
azure-vote-front                       latest              052c549a75bf        23 minutes ago      913MB
<acrName>.azurecr.io/azure-vote-front  v1                  052c549a75bf        23 minutes ago      913MB

Inserción de imágenes en el registro

Inserte la imagen azure-vote-front en el registro.

En el siguiente ejemplo, reemplace el nombre loginServer de ACR por el loginServer de su entorno.

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

Los comandos de inserción de Docker tardan un par de minutos en completarse.

Lista de imágenes en el registro

Para que se devuelva una lista de las imágenes que se han insertado en la instancia de Azure Container Registry, el usuario debe usar el comando az acr repository list. Actualice el comando con el nombre de instancia de ACR.

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

Salida:

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

Al finalizar el tutorial, la imagen de contenedor se ha almacenado en una instancia privada de Azure Container Registry. Esta imagen se implementa desde ACR en un clúster de Service Fabric en tutoriales posteriores.

Pasos siguientes

En este tutorial, se extrajo una aplicación de GitHub y se crearon e insertaron imágenes de contenedor en un registro. Se han completado los siguientes pasos:

  • Clonar el origen de la aplicación de GitHub
  • Crear una imagen de contenedor a partir del origen de la aplicación
  • Implementar una instancia de Azure Container Registry (ACR)
  • Etiquetar una imagen de contenedor para ACR
  • Cargar la imagen a ACR

Avance hasta el siguiente tutorial para obtener información acerca del empaquetado de contenedores en una aplicación de Service Fabric mediante Yeoman.