martes, 20 de noviembre de 2018

Desplegar Docker Containers en Azure App Service

El objetivo de este tutorial es mostrar una manera rápida y fácil de almacenar y ejecutar tus imágenes de contenedores en la plataforma Azure de Microsoft.

Veremos cómo crear una imagen de contenedor localmente, enviarla al Registro de Azure Container y luego ejecutarla mediante la aplicación web de Azure para contenedores. Es una excelente manera de ejecutar un solo contenedor para una sola aplicación web.

Todo lo que se necesita es Git y Docker Desktop instalados localmente, junto con una cuenta de Azure (Puede ser una cuenta trial sin problemas)

Creación del recurso Registro de contenedor de Azure (ACR)

Las imágenes de contenedores proporcionan la base para aplicaciones que se ejecutan dentro de contenedores Docker. Una imagen es como un paquete ejecutable que incluye todo lo que necesita para ejecutar una aplicación. Las imágenes de tu contenedor incluyen el código de la aplicación, el entorno de ejecución, las bibliotecas, los archivos de configuración y las variables de entorno.

Las imágenes de contenedores se encuentran en registros públicos o privados segun sea el caso, y los servidores que ejecutan el motor Docker descargan esas imágenes para iniciar y ejecutar contenedores. El registro de contenedores predeterminado para los contenedores de Docker es hub.docker.com, que ofrece más de 100,000 imágenes de contenedores de ISV, proyectos de código abierto y colaboradores de la comunidad. Podes utilizar este servicio para almacenar tus imágenes en repositorios públicos o privados (hasta 1 repositorio privado es gratis)

Microsoft también ofrece el Registro de Contenedores de Azure (ACR), que es un servicio de registro de Docker administrado basado en la plataforma Docker Registry 2.0 de código abierto.

El uso de ACR para implementaciones de contenedores  permite almacenar las imágenes de contenedores personalizados de forma privada en la nube de Azure. ACR se integra de forma nativa con múltiples servicios de Azure, y los equipos pueden usar las tareas de ACR para automatizar las implementaciones al crear nuevas imágenes o cuando el código se tiene que usar con control de versiones. ACR también proporciona un acceso de baja latencia para extraer imágenes cuando los hosts de Docker se ejecutan en la nube de Azure.

Para este tutorial, vamos a crear una nueva instancia de ACR, luego crearemos una imagen de Docker personalizada y haremos push de la misma a ACR para que podamos usarla más adelante con la aplicación web de Azure para contenedores.

En el portal de Azure, selecciona crear un recurso y elija registro de contenedor (ACR)





































Es necesario un nombre de host compatible con DNS globalmente único para tu registro bajo el espacio de nombres global azurecr.io. Luego defini el grupo de recursos de destino y asegúrate de habilitar la opción para el usuario administrador y clic en Crear.

Una vez que se complete el aprovisionamiento, navegue a tu recurso ACR en el portal y seleccione claves de acceso en la sección de configuración. Aquí se verá el servidor de inicio de sesión, nombre de usuario de administrador y contraseñas.






















Como parte final de esta seccion, inicia un terminal y usa el comando de inicio de sesión de la ventana login server para autenticarte en ACR y validar las credenciales.











Deberías obtener un mensaje similar al de la imagen anterior.

En el siguiente paso es armar la imagen para posteriormente hacer el push al registro creado en el paso anterior, para este paso vamos a crear una imagen bien sencilla basada en Apache ejecutándose en una imagen base de Debían. Vamos a necesitar una maquina con Docker instalado y definir 2 archivos:

* Dockerfile
* HTML base para servirlo en Apache

Vamos al detalle de estos archivos:

Dockerfile:

FROM debian:latest
MAINTAINER Christian Ibiri
RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-$
COPY index.html /var/www/html/
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND


Html:

<!DOCTYPE html>
<html>
<body>

<h1>Prueba para post App Service Docker</h1>
</h2>Creado por Christian Ibiri</h2>

</body>
</html>

Una vez que tenemos estos 2 archivos hacemos el build de la imagen y hacemos push de la misma al ACR:

docker build -t cibiriregistry.azurecr.io/demo-apache:latest .



















Vamos con el push:

docker push cibiriregistry.azurecr.io/demo-apache:latest










Como se puede observar en la imagen anterior la imagen se creo correctamente y deberíamos ver la misma disponible en ACR dentro de la consola de Microsoft Azure:
















Ahora que la imagen se encuentra almacenada en ACR podemos crear una nueva aplicación web dentro de Microsoft Azure e indicar que queremos utilizar la imagen previamente creada, para esto al momento de crear la aplicación seleccionamos que el origen de la imagen es ACR:





























Con esto tenemos indicada toda la configuración y podemos crear la aplicación web, si todo funciono correctamente deberíamos ver el contenido del HTML en la URL publica asignada a la aplicación dentro de Azure.














Esta funcionando perfectamente:










En un próximo post veremos como realizar despliegue continuo a App Service utilizando Docker.

No hay comentarios.:

Publicar un comentario