Publicar tu imagen de Docker en Azure Container Registry

La primera vez que compartes una imagen seguramente sea a través de los repositorios públicos de Docker Hub, como te conté ayer. Sin embargo, está claro que en la mayoría de los escenarios, sobre todo los empresariales, necesitamos algo privado, no compartido con el mundo entero. Hay diferentes opciones de registros privados, como el propio Docker Hub, crearte uno en local o usar alguna de las nubes. Hoy te quiero contar el registro privado que ofrece Microsoft Azure, llamado Azure Container Registry.
Crea tu registro privado en Microsoft Azure
Para crear un registro privado en Microsoft Azure accede al portal y busca Container a través del botón Create a resource del menú. Selecciona el servicio Container Registry.

Para este ejemplo he utilizado el SKU Basic, ya que es más que suficiente.

Vamos a continuar con el mismo ejemplo, para no perder el hilo. Lo primero que necesitas es, al igual que hicimos en el post anterior, subir tu imagen de nodejs-webapp al registro, en este caso en Azure. A diferencia de Docker Hub, para poder conectarte a este nuevo registro necesitas tener instalado Azure CLI y ejecutar el siguiente comando:
az login
Si tienes más de una suscripción, selecciona aquella en la que has creado el servicio a través de este otro comando:
az account set -s SUBSCRIPTION_ID
Por último, haz login en tu Azure Container Registry, indicando como name el nombre que elegiste durante la creación:
az acr login --name returngis
Si el inicio de sesión ha sido satisfactorio aparecerá el mensaje de Login Succeeded. Si recuerdas el post de ayer, antes de subir tu imagen a cualquier registro es necesario utilizar una nomenclatura específica. En el caso de Docker Hub era tu_nombre_de_usuario/repositorio:etiqueta. En el caso de Azure Container Registry es nombre_del_servidor_de_registro/repositorio:etiqueta. El nombre de tu servidor puedes encontrarlo aquí:

En mi caso, el comando que tengo que lanzar para generar una imagen con la nomenclatura correcta sería:
docker push returngis.azurecr.io/nodejs-webapp:v1
Ahora ya puedo publicar mi imagen en Azure Container Registry, a través de docker push.
docker push returngis.azurecr.io/nodejs-webapp:v1
Cuando finalice la subida podrás ver la imagen en el apartado Repositories.

Por último, queda comprobar que es posible descargar e instanciar la imagen en un contenedor en local. Para hacer la prueba, vamos a parar todos los contenedores que tengamos ejecutándose:
docker kill $(docker ps -q)
Una vez parados los eliminamos:
docker rm $(docker ps -a -q)
Y eliminamos además todas las imágenes.
docker rmi -f $(docker images -q)
Ahora, con todo limpísimo, ejecuta el siguiente comando para descargar e instanciar tu imagen, que ya está en Azure Container Registry.
docker run -p 4000:3000 returngis.azurecr.io/nodejs-webapp:v1
El resultado será el siguiente:

Al igual que en las veces anteriores, puedes comprobar que la aplicación es accesible desde http://localhost:4000
Por último, para comprobar todas las imágenes que tienes disponible en tu repositorio privado puedes hacerlo desde el siguiente comando:
az acr repository list -n returngis -o table
Imagen de portada por kyohei ito.
¡Saludos!