Tutorial: Creación de una instancia de Azure Container Registry e inserción de una imagen de contenedor

Esta es la segunda parte de un tutorial de tres partes. En la primera parte del tutorial se ha creado una imagen de contenedor de Docker para una aplicación web de Node.js. En este tutorial, la imagen se inserta en Azure Container Registry. Si no ha creado todavía la imagen de contenedor, vuelva a Tutorial 1: Creación de una imagen de contenedor.

Azure Container Registry es su registro de Docker privado en Azure. En este tutorial, segunda parte de la serie, se realizan las siguientes operaciones:

  • Creación de una instancia de Azure Container Registry con la CLI de Azure
  • Etiquetar una imagen de contenedor para Azure Container Registry
  • Cargar la imagen en el registro

En el artículo siguiente, el último tutorial de la serie, va a implementar el contenedor del registro privado en Azure Container Instances.

Antes de empezar

Para completar este tutorial es preciso cumplir los siguientes requisitos:

CLI de Azure: debe tener la versión 2.0.29 de la CLI de Azure, cualquier versión posterior, instalada en el equipo local. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.

Docker: en este tutorial se supone que el usuario tiene un conocimiento básico de los principales conceptos de Docker, como los contenedores, las imágenes de contenedor y los comandos básicos de docker. Para conocer los principios básicos de Docker y de los contenedores, consulte Introducción a Docker.

Docker: para completar este tutorial, es preciso que el motor de Docker esté instalado localmente. Docker dispone de paquetes que configuran el entorno de Docker en macOS, Windows y Linux.

Importante

Dado que Azure Cloud Shell no incluye el demonio de Docker, para completar este tutorial es preciso instalar tanto la CLI de Azure como el motor de Docker en el equipo local. Azure Cloud Shell no se puede instalar para este tutorial.

Creación de una instancia de Azure Container Registry

Antes de crear el registro de contenedor, necesita un grupo de recursos en donde implementarlo. Un grupo de recursos es una colección lógica en la que se implementan y administran todos los recursos de Azure.

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

az group create --name myResourceGroup --location eastus

Cuando se haya creado el grupo de recursos, cree un registro de contenedor de Azure con el comando az acr create. El nombre del registro de contenedor debe ser único dentro de Azure y contener entre 5 y 50 caracteres alfanuméricos. Reemplace <acrName> por un nombre único para el registro:

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

Esta es la salida parcial de una nueva instancia de Azure Container Registry denominada mycontainerregistry082:

{
  "creationDate": "2020-07-16T21:54:47.297875+00:00",
  "id": "/subscriptions/<Subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/mycontainerregistry082",
  "location": "eastus",
  "loginServer": "mycontainerregistry082.azurecr.io",
  "name": "mycontainerregistry082",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "sku": {
    "name": "Basic",
    "tier": "Basic"
  },
  "status": null,
  "storageAccount": null,
  "tags": {},
  "type": "Microsoft.ContainerRegistry/registries"
}

En el resto del tutorial se hace referencia a <acrName> como marcador de posición del nombre del registro de contenedor que eligió en este paso.

Inicio de sesión en el registro de contenedor

Debe iniciar sesión en la instancia de Azure Container Registry antes de insertar imágenes en ella. Use el comando az acr login para completar la operación. Debe especificar el nombre único que eligió para el registro de contenedor cuando lo creó.

az acr login --name <acrName>

Por ejemplo:

az acr login --name mycontainerregistry082

El comando devuelve Login Succeeded una vez completado:

Login Succeeded

Etiquetado de la imagen de contenedor

Para insertar una imagen de contenedor en un registro privado como Azure Container Registry, primero debe etiquetar la imagen con el nombre completo del servidor de inicio de sesión del registro.

En primer lugar, obtenga el nombre del servidor de inicio de sesión completo de la instancia de Azure Container Registry. Ejecute el siguiente comando az acr show y reemplace <acrName> por el nombre del registro que acaba de crear:

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

Por ejemplo, si el registro se denomina mycontainerregistry082:

az acr show --name mycontainerregistry082 --query loginServer --output table
Result
------------------------
mycontainerregistry082.azurecr.io

Ahora, muestre la lista de imágenes locales con el comando docker images:

docker images

Junto con cualquier otra imagen que tenga en su máquina, debería ver la imagen aci-tutorial-app que creó en el tutorial anterior:

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

Etiquete la imagen aci-tutorial-app con el servidor de inicio de sesión del registro de contenedor. Además, agregue la etiqueta :v1 al final del nombre de imagen para indicar el número de versión de la imagen. Reemplace <acrLoginServer> por el resultado del comando az acr show que ha ejecutado antes.

docker tag aci-tutorial-app <acrLoginServer>/aci-tutorial-app:v1

Vuelva a ejecutar docker images para comprobar la operación de etiquetado:

docker images
REPOSITORY                                            TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app                                      latest    5c745774dfa9    39 minutes ago    68.1 MB
mycontainerregistry082.azurecr.io/aci-tutorial-app    v1        5c745774dfa9    7 minutes ago     68.1 MB

Inserción de imágenes en Azure Container Registry

Ahora que ha etiquetado la imagen aci-tutorial-app con el nombre del servidor de inicio de sesión completo del registro privado, puede insertarla en el registro con el comando docker push. Reemplace <acrLoginServer> por el nombre del servidor de inicio de sesión completo obtenido en el paso anterior.

docker push <acrLoginServer>/aci-tutorial-app:v1

La operación push debería tardar de unos segundos a unos minutos según la conexión a Internet, y el resultado ser similar al siguiente:

docker push mycontainerregistry082.azurecr.io/aci-tutorial-app:v1
The push refers to a repository [mycontainerregistry082.azurecr.io/aci-tutorial-app]
3db9cac20d49: Pushed
13f653351004: Pushed
4cd158165f4d: Pushed
d8fbd47558a8: Pushed
44ab46125c35: Pushed
5bef08742407: Pushed
v1: digest: sha256:ed67fff971da47175856505585dcd92d1270c3b37543e8afd46014d328f05715 size: 1576

Lista de imágenes en Azure Container Registry

Para comprobar que la imagen que acaba de insertar está efectivamente en el registro de contenedor de Azure, enumere las imágenes del registro con el comando az acr repository list. Reemplace <acrName> por el nombre de Registro de contenedor.

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

Por ejemplo:

az acr repository list --name mycontainerregistry082 --output table
Result
----------------
aci-tutorial-app

Para ver las etiquetas de una imagen concreta, use el comando az acr repository show-tags.

az acr repository show-tags --name <acrName> --repository aci-tutorial-app --output table

Debería ver un resultado similar al siguiente:

--------
v1

Pasos siguientes

En este tutorial, ha preparado una instancia de Azure Container Registry para usarla con Azure Container Instances y ha insertado una imagen de contenedor en el registro. Se han completado los siguientes pasos:

  • Creación de una instancia de Azure Container Registry con la CLI de Azure
  • Etiquetado de una imagen de contenedor para Azure Container Registry
  • Carga de una imagen en Azure Container Registry

Vaya al tutorial siguiente para obtener información sobre cómo implementar el contenedor en Azure con Azure Container Instances: