Ejercicio: Compilación y ejecución de una imagen de contenedor mediante Azure Container Registry Tasks
En este ejercicio, se usa ACR Tasks para realizar las siguientes acciones:
- Cree una instancia de Azure Container Registry (ACR).
- Creación e inserción de una imagen desde Dockerfile
- Verificación de los resultados
- Ejecución de la imagen en ACR
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Si aún no tiene una, puede solicitar una prueba gratuita en https://azure.com/free.
Inicio de sesión en Azure e inicio de Cloud Shell
Inicie sesión en Azure Portal y abra Cloud Shell.
Una vez que se abra el shell, seleccione el entorno Bash.
Creación de una instancia de Azure Container Registry
Creación de un grupo de recursos para el registro. Reemplace
<myLocation>
en el siguiente comando por una ubicación cercana.az group create --name az204-acr-rg --location <myLocation>
Cree un registro de contenedor básico. El nombre del registro debe ser único dentro de Azure y contener entre 5 y 50 caracteres alfanuméricos. Reemplace
<myContainerRegistry>
en el comando siguiente por un valor único.az acr create --resource-group az204-acr-rg \ --name <myContainerRegistry> --sku Basic
Nota
El comando crea un registro Básico, una opción de costo optimizado para los desarrolladores que están aprendiendo a usar Azure Container Registry.
Creación e inserción de una imagen desde Dockerfile
Ahora puede usar Azure Container Registry para compilar e insertar una imagen basada en un Dockerfile local.
Cree o elija un directorio local y, a continuación, use el comando siguiente para crear el Dockerfile. El Dockerfile contiene una sola línea que hará referencia a la imagen de
hello-world
hospedada en Microsoft Container Registry.echo FROM mcr.microsoft.com/hello-world > Dockerfile
Ejecute el comando
az acr build
, que compilará la imagen y, tras ello, la insertará en el registro. Reemplace<myContainerRegistry>
por el nombre que ha usado anteriormente.az acr build --image sample/hello-world:v1 \ --registry <myContainerRegistry> \ --file Dockerfile .
A continuación se muestra un ejemplo abreviado de la salida del comando anterior que muestra las últimas líneas con los resultados finales. Puede ver en el campo
repository
que aparece la imagen desample/hello-word
.- image: registry: <myContainerRegistry>.azurecr.io repository: sample/hello-world tag: v1 digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a runtime-dependency: registry: mcr.microsoft.com repository: hello-world tag: latest digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a git: {} Run ID: cf1 was successful after 11s
Verificación de los resultados
Use el comando
az acr repository list
para enumerar los repositorios del registro. Reemplace<myContainerRegistry>
por el nombre que ha usado anteriormente.az acr repository list --name <myContainerRegistry> --output table
Salida:
Result ---------------- sample/hello-world
Use el comando
az acr repository show-tags
para enumerar las etiquetas en el repositorio sample/hello-world. Reemplace<myContainerRegistry>
por el nombre que ha usado anteriormente.az acr repository show-tags --name <myContainerRegistry> \ --repository sample/hello-world --output table
Salida:
Result -------- v1
Ejecución de la imagen en ACR
Ejecute la imagen de contenedor
sample/hello-world:v1
desde el registro de contenedor mediante el comandoaz acr run
. En el ejemplo siguiente, se usa$Registry
para especificar el registro donde se ejecuta el comando. Reemplace<myContainerRegistry>
por el nombre que ha usado anteriormente.az acr run --registry <myContainerRegistry> \ --cmd '$Registry/sample/hello-world:v1' /dev/null
El parámetro
cmd
de este ejemplo ejecuta el contenedor en su configuración predeterminada, perocmd
admite otros parámetrosdocker run
, o incluso otros comandosdocker
.La salida de ejemplo siguiente se abrevia:
Packing source code into tar to upload... Uploading archived source code from '/tmp/run_archive_ebf74da7fcb04683867b129e2ccad5e1.tar.gz'... Sending context (1.855 KiB) to registry: mycontainerre... Queued a run with ID: cab Waiting for an agent... 2019/03/19 19:01:53 Using acb_vol_60e9a538-b466-475f-9565-80c5b93eaa15 as the home volume 2019/03/19 19:01:53 Creating Docker network: acb_default_network, driver: 'bridge' 2019/03/19 19:01:53 Successfully set up Docker network: acb_default_network 2019/03/19 19:01:53 Setting up Docker configuration... 2019/03/19 19:01:54 Successfully set up Docker configuration 2019/03/19 19:01:54 Logging in to registry: mycontainerregistry008.azurecr.io 2019/03/19 19:01:55 Successfully logged into mycontainerregistry008.azurecr.io 2019/03/19 19:01:55 Executing step ID: acb_step_0. Working directory: '', Network: 'acb_default_network' 2019/03/19 19:01:55 Launching container with name: acb_step_0 Hello from Docker! This message shows that your installation appears to be working correctly. 2019/03/19 19:01:56 Successfully executed container: acb_step_0 2019/03/19 19:01:56 Step ID: acb_step_0 marked as successful (elapsed time in seconds: 0.843801) Run ID: cab was successful after 6s
Limpieza de recursos
Cuando ya no lo necesite, puede usar el comando az group delete
para quitar el grupo de recursos, el registro de contenedor y las imágenes de contenedor almacenadas allí.
az group delete --name az204-acr-rg --no-wait