Introducción:
En un entorno de desarrollo moderno, la capacidad de empaquetar y desplegar aplicaciones de manera eficiente es fundamental para garantizar la escalabilidad y flexibilidad de los proyectos. Docker se ha consolidado como una de las herramientas más poderosas para la creación y gestión de contenedores, permitiendo a los desarrolladores aislar sus aplicaciones y dependencias en un entorno controlado.
En este tutorial, exploraremos cómo crear una imagen Docker simple y desplegarla utilizando los servicios en la nube de Azure. A través de esta práctica, conocerás el funcionamiento de Azure Container Registry (ACR), una solución gestionada para almacenar y distribuir tus imágenes de contenedor, y aprenderás cómo utilizar Azure Container Instances (ACI) para ejecutar contenedores sin la complejidad de gestionar una infraestructura completa.
Al final del tutorial, habrás dado un paso importante hacia el entendimiento de cómo integrar Docker con Azure, lo que te proporcionará una base sólida para implementar aplicaciones en la nube de forma rápida y eficiente.
Crear una imagen Docker:
Primero crearemos la imagen docker en local, de ejemplo tomaré una página de presentación simple en html.
- Clonar el repositorio:
git clone https://github.com/leonxrdon/simple_card.git card-presentation
- Listamos el contenido:
cd card-presentation ls -l
En este caso solo muestra el contenido de dos archivos que he realizado de ejemplo:
- Ahora vamos a crear nuestro archivo Dockerfile, el archivo se crea sin ninguna extención.
touch Dockerfile
En este archivo definiremos las instrucciones necesarias para construir nuestra imagen Docker. En este ejemplo, usaremos Nginx como servidor para desplegar una página web sencilla.
- Abre en un editor de texto el archivo Dockerfile y agrega las siguientes instrucciones:
# Imagen base de nginx FROM nginx:alpine # Copia los archivos de mi portfolio al directorio HTML de nginx COPY . /usr/share/nginx/html
- Para crear la imagen ejecutamos el siguiente comando en la terminal.
docker build -t card-presentation .
- Una vez que hayas construido la imagen, puedes verificar todas las imágenes que se han creado en tu entorno Docker. Para ello, ejecuta el siguiente comando en la terminal:
docker images
Se verá algo como esto:
- Ahora que has creado la imagen, vamos a ejecutarla para comprobar su funcionamiento desde el navegador. Para iniciar el contenedor basado en la imagen que acabas de crear, ejecuta el siguiente comando en la terminal:
docker run -d -p 8080:80 card-presentation
Veras algo como esto:
- Para ver si esta en funcionamiento, podemos ejecutar el siguiente comando:
docker ps -a
Se mostrará un listado de los contenedores activos.
Si estas usando Docker Desktop en windows, también deberías ver como se ha creado el contenedor y la imagen:
Si entras en el navegador a la dirección: http://localhost:8080 podrás ver tu aplicación web funcionando correctamente:
¡Listo! Ahora tienes tu proyecto funcionando en un contenedor. Como recomendación, es buena práctica guardar tu proyecto en un repositorio de código, como GitHub o una plataforma similar.
Crear una instancia en Azure Container Registry:
Ahora que tienes tu proyecto funcionando localmente, es el momento de llevarlo a la nube y desplegarlo en la plataforma de Azure. Este paso te permitirá acceder a tu aplicación desde cualquier lugar y aprovechar la escalabilidad que ofrece Azure.
Creación de Azure Container Registry
Antes de la creación del registro del contenedor necesitamos 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.
Buscamos dentro del panel Registro de Contenedor, una vez ahí vamos a guardar la siguiente información:
- Antes de continuar, nos solicitará guardar un grupo de recursos, lo creamos dentro del mismo formulario. En mi caso le pondré el nombre: myResourceGroup
- Al final la configuración te debe quedar de la siguiente manera:
Una vez que hayas configurado todos los parámetros necesarios para tu contenedor, haz clic en Revisar y crear. En este punto, se mostrará un resumen de todas las configuraciones que has realizado.
- Aquí podrás verificar:
- Los recursos asignados (CPU, memoria).
- Las configuraciones de red.
- La imagen seleccionada.
Azure te avisará si hay algún conflicto o si todo está correcto. Si todo está en orden, simplemente haz clic en Crear para desplegar tu contenedor.
Después de validar todo, se creara el Registro de Contenedor y se mostrará dentro del panel algo así:
Antes de poder cargar los recursos tenemos que dar permiso de administrador, para eso:
- Damos clic en Detalles de implementación y accedemos a nuestro registro:
- Dentro de nuestro Registro, iremos a propiedades y habilitamos Usuario Administrador y guardamos:
Cargar la imagen docker dentro de Azure
Ahora vamos a montar la imagen que hemos creado en local dentro de Azure, para ello en la terminal de nuestro proyecto:
- Vamos a iniciar sesion con el comando:
az login
Al intentar acceder a Azure, se abrirá una ventana para que inicies sesión con tu cuenta de Azure. Ingresa tus credenciales y haz clic en Iniciar sesión.
Una vez que hayas iniciado sesión correctamente, deberías ver un mensaje de confirmación similar a este:
- Ahora vamos a loguearnos con el contenedor:
Si sale de forma satisfactoria ahora desde la misma terminal vamos a cargar la imagen a Azure con los siguientes comandos:
- Para identificar y organizar tu imagen en Azure Container Registry, es importante crear un tag. Este tag te ayudará a gestionar diferentes versiones de tu imagen. La estructura del comando para crear un tag es la siguiente:
docker tag <nombre-de-la-imagen-local> <nombre-del-registro-en-minúsculas>.azurecr.io/<nombre-de-la-imagen>:v1
<nombre-de-la-imagen-local>
: El nombre de la imagen que has creado en tu entorno local.<nombre-del-registro-en-minúsculas>
: El nombre que has asignado a tu registro de Azure Container Registry.<nombre-de-la-imagen>
: Un nombre descriptivo para tu imagen.:v1
: La etiqueta que indica la versión de la imagen. Puedes modificarla según la versión que desees.
En nuestro caso el comando quedaría de la siguiente forma:
docker tag card-presentation dockercardpresentation.azurecr.io/card-presentation:v1
- Después de esto vamos hacer el push:
docker push dockercardpresentation.azurecr.io/card-presentation:v1
Si todo sale bien se vera algo como esto, si algo falla asegúrate de que los nombres de la imagen y del registro estén correctamente escritos:
Configurar Azure Container Instances
Ahora volvemos al portal de Azure y vamos a configurar nuestro contenedor:
- Damos clic en Implementar una imagen:
- Ahora damos a Iniciar en Instancias de contenedor:
- Ponemos las configuraciones de la siguiente manera: