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.

Create a resource - Azure Container Registry
Create a resource – Azure Container Registry

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

Create container registry

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í:

Azure Container Registry - Login Server
Azure Container Registry – Login Server

En mi caso, el comando que tengo que lanzar para generar una imagen con la nomenclatura correcta sería:

docker tag nodejs-webapp 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.

Tu imagen nodejs-webapp en Azure Container Registry

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:

docker run -p 4000:3000 returngis.azurecr.io/nodejs-webapp:v1
docker run -p 4000:3000 returngis.azurecr.io/nodejs-webapp:v1

Al igual que en las veces anteriores, puedes comprobar que la aplicación es accesible desde http://localhost:4000

Imagen de portada por kyohei ito.

¡Saludos!