Tutorial: Creación de una imagen de contenedor para su implementación en Azure Container Instances
Azure Container Instances permite la implementación de contenedores de Docker en una infraestructura de Azure sin necesidad de aprovisionar ninguna máquina virtual o adoptar un servicio de nivel superior. En este tutorial, se empaqueta una pequeña aplicación web de Node.js en una imagen del contenedor que se puede ejecutar mediante Azure Container Instances.
En este artículo, la primera parte de la serie, podrá:
- Clonar el código fuente de la aplicación desde GitHub
- Crear una imagen de contenedor desde el origen de la aplicación
- Probar la imagen en un entorno local de Docker
En las partes dos y tres del tutorial, se carga la imagen de Azure Container Registry y, después, se implementa 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. Para encontrar la versión, ejecute az --version
. 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.
Obtención del código de la aplicación
La aplicación de ejemplo de este tutorial es una aplicación web sencilla compilada en Node.js. La aplicación sirve una página HTML estática y es similar a la captura de pantalla siguiente:
Use Git para clonar el repositorio de la aplicación de ejemplo:
git clone https://github.com/Azure-Samples/aci-helloworld.git
También puede descargar el archivo ZIP directamente de GitHub.
Compilación de la imagen del contenedor
El archivo Dockerfile de la aplicación de ejemplo muestra cómo se compila el contenedor. Comienza con una imagen oficial de Node.js basada en Alpine Linux, una pequeña distribución muy apropiada para usarla con contenedores. Luego copia los archivos de aplicación en el contenedor, instala las dependencias mediante Node Package Manager y, por último, inicia la aplicación.
FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js
Use el comando docker build para crear la imagen del contenedor y etiquetarla como aci-tutorial-app:
docker build ./aci-helloworld -t aci-tutorial-app
La salida del comando docker build es similar a la siguiente (truncada para favorecer la legibilidad):
docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon 119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
---> Running in f4a1ea099eec
---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest
Use el comando docker images para ver la imagen compilada:
docker images
La imagen recién compilada debería aparecer en la lista:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
aci-tutorial-app latest 5c745774dfa9 39 seconds ago 68.1 MB
Ejecute el contenedor localmente
Antes de implementar el contenedor en Azure Container Instances, use docker run para ejecutarlo localmente y confirmar que funciona. El modificador -d
permite que el contenedor se ejecute en segundo plano, mientras que -p
permite asignar un puerto arbitrario del equipo al puerto 80 del contenedor.
docker run -d -p 8080:80 aci-tutorial-app
La salida del comando docker run
muestra el identificador del contenedor en ejecución si el comando se realizó correctamente:
docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf
Ahora, vaya a http://localhost:8080
en el explorador para confirmar que el contenedor está en ejecución. Debería ver una página web similar a la que aparece en la captura de pantalla siguiente.
Pasos siguientes
En este tutorial, ha creado una imagen de contenedor que se puede implementar en Azure Container Instances y ha comprobado qu8e funciona localmente. Hasta ahora ha completado los pasos siguientes:
- Se ha clonado el origen de la aplicación desde GitHub
- Ha creado una imagen de contenedor a partir del origen de la aplicación
- El contenedor se ha probado localmente
Pase al siguiente tutorial de la serie para aprender a almacenar imágenes de contenedor en Azure Container Registry: