Implementación de una imagen de Docker en una instancia de Azure Container

Completado

Azure Container Instances es un servicio que carga y ejecuta imágenes de Docker a petición. El servicio Azure Container Instances puede recuperar una imagen de un Registro, como Docker Hub o Azure Container Registry.

Su organización quiere usar Azure para ejecutar sus aplicaciones web. Por este motivo, tiene sentido almacenar las imágenes en Azure Container Registry y ejecutarlas mediante el servicio Instancia de Azure Container.

En esta unidad, obtendrá información sobre cómo insertar una imagen de Docker en Azure Container Registry. Posteriormente, ejecutará la imagen mediante el servicio Azure Container Instances.

Uso de Azure Container Registry para almacenar un contenedor

Azure Container Registry es un servicio de hospedaje de registro proporcionado por Azure. Cada recurso de Azure Container Registry que se crea es un registro independiente con una dirección URL única. Estos Registros son privados, es decir, requieren autenticación para la inserción o la extracción de las imágenes. Azure Container Registry se ejecuta en la nube y proporciona niveles de escalabilidad y disponibilidad similares a los de otros servicios de Azure.

Puede crear un registro mediante Azure Portal o mediante la interfaz de la línea de comandos (CLI) de Azure. Puede usar Azure Cloud Shell en Azure Portal o una instalación local de la CLI de Azure. Tenga en cuenta que tendrá que crear un grupo de recursos antes de crear el Registro. Al crear un grupo de recursos, se recomienda elegir la región más cercana. En este ejemplo, el nombre del grupo de recursos es mygroup y la ubicación es Oeste de EE. UU.

No es necesario ejecutar ninguno de los siguientes comandos. Lo hará en el ejercicio siguiente.

Nota

Necesita un nombre único para el contenedor. Puede comprobar si un nombre ya está en uso aquí.

az group create --name mygroup --location westus
az acr create --name <unique name> --resource-group mygroup --sku standard --admin-enabled true

Cada SKU proporciona diversos niveles de escalabilidad y almacenamiento.

Los repositorios de Azure Container Registry son privados, es decir, no admiten el acceso no autenticado. Para extraer imágenes de un repositorio de Azure Container Registry, use el comando docker login y especifique la dirección URL del servidor de inicio de sesión para el registro. La dirección URL del servidor de inicio de sesión para un registro de Azure Container Registry tiene el formato <nombre_del_registro>.azurecr.io.

docker login myregistry.azurecr.io

El inicio de sesión de Docker le pedirá un nombre de usuario y una contraseña. Para encontrar esta información, vaya a Azure Portal y busque las claves de acceso para el registro o ejecute el comando siguiente.

az acr credential show --name myregistry --resource-group mygroup

Para insertar una imagen desde el equipo local a un Registro de Docker, se usa el comando docker push. Pero antes de insertar una imagen, debe crear un alias para la imagen en el que se especifique el repositorio y la etiqueta que crea el Registro de Docker. El nombre del repositorio debe tener el formato *<servidor_de_inicio_de_sesión>/<nombre_de_la_imagen>:<etiqueta/>. Use el comando docker tag para realizar esta operación. En el ejemplo siguiente se crea un alias para la imagen reservationsystem.

docker tag reservationsystem myregistry.azurecr.io/reservationsystem:v2

Si ejecuta docker image ls, verá dos entradas para la imagen: una con el nombre original y la segunda con el nuevo alias.

Después de ejecutar el comando tag, puede cargar la imagen en el Registro en Azure Container Registry mediante el comando siguiente.

docker push myregistry.azurecr.io/reservationsystem:v2

Para comprobar que la imagen se ha cargado correctamente, enumere los repositorios del Registro con el comando siguiente.

az acr repository list --name myregistry --resource-group mygroup

También puede enumerar las imágenes del Registro con el comando acr repository show.

az acr repository show --repository reservationsystem --name myregistry --resource-group mygroup

Nota:

Verá al menos dos etiquetas para cada imagen de un repositorio. Una etiqueta será el valor que ha especificado en el comando acr build (v1 en el ejemplo anterior). La otra será latest. Cada vez que recompile una imagen, Azure Container Registry crea automáticamente la etiqueta latest como un alias para la versión más reciente de la imagen.

Uso de Instancia de Azure Container para ejecutar una imagen

El servicio Instancia de Azure Container puede cargar una imagen desde Azure Container Registry y ejecutarla en Azure.

Puede crear una instancia de contenedor e iniciar la ejecución de la imagen con el comando az container create. Proporcione el nombre de usuario y la contraseña para el registro en los parámetros registry-username y registry-password. Se asignará una dirección IP a la instancia. Con esta dirección IP se accede a la instancia. Opcionalmente, puede especificar un nombre DNS si prefiere hacer referencia a la instancia a través de una etiqueta más fácil de usar. Tenga en cuenta que la imagen se especifica como una dirección URL que hace referencia el registro (myregistry) en el servicio Azure Container Registry (azurecr.io). Si usa Docker Hub o algún otro registro, reemplace esta dirección URL por la URL de la imagen en ese registro.

az container create --resource-group mygroup --name myinstance --image myregistry.azurecr.io/myapp:latest --dns-name-label mydnsname --registry-username <username> --registry-password <password>

Azure hospeda la instancia con un nombre de dominio basado en la etiqueta DNS especificada. Para buscar el nombre de dominio completo de la instancia, consulte la dirección IP de la instancia.

az container show --resource-group mygroup --name myinstance --query ipAddress.fqdn

Puede acceder a la aplicación mediante un explorador web. Puede navegar a la dirección URL devuelta por este comando; en la unidad siguiente se verá cómo.