Inicio rápido: Implementación de una instancia de contenedor en Azure mediante la CLI de AzureQuickstart: Deploy a container instance in Azure using the Azure CLI

Use Azure Container Instances para ejecutar contenedores de Docker sin servidor en Azure con sencillez y velocidad.Use Azure Container Instances to run serverless Docker containers in Azure with simplicity and speed. Implemente una aplicación en una instancia de contenedor a petición cuando no necesite una plataforma de orquestación de contenedores completa, como Azure Kubernetes Service.Deploy an application to a container instance on-demand when you don't need a full container orchestration platform like Azure Kubernetes Service.

En esta guía de inicio rápido, va a usar la CLI de Azure para implementar un contenedor de Docker aislado y hacer que su aplicación esté disponible con un nombre de dominio completo (FQDN).In this quickstart, you use the Azure CLI to deploy an isolated Docker container and make its application available with a fully qualified domain name (FQDN). Unos pocos segundos después de ejecutar un comando de implementación único, puede ir a la aplicación que se ejecuta en el contenedor:A few seconds after you execute a single deployment command, you can browse to the application running in the container:

Visualización de una aplicación implementada en Azure Container Instances en el explorador

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Puede usar Azure Cloud Shell o una instalación local de la CLI de Azure para completar esta guía de inicio rápido.You can use the Azure Cloud Shell or a local installation of the Azure CLI to complete this quickstart. Si desea usarlos de forma local, se recomienda la versión 2.0.55 o posterior.If you'd like to use it locally, version 2.0.55 or later is recommended. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Crear un grupo de recursosCreate a resource group

Las instancias de contenedores de Azure, al igual que otros recursos de Azure, se deben implementar en un grupo de recursos.Azure container instances, like all Azure resources, must be deployed into a resource group. Los grupos de recursos le permiten organizar y administrar los recursos relacionados de Azure.Resource groups allow you to organize and manage related Azure resources.

En primer lugar, cree un grupo de recursos denominado myResourceGroup en la ubicación eastus con el comando az group create siguiente:First, create a resource group named myResourceGroup in the eastus location with the following az group create command:

az group create --name myResourceGroup --location eastus

Crear un contenedorCreate a container

Ahora que tiene un grupo de recursos, puede ejecutar un contenedor en Azure.Now that you have a resource group, you can run a container in Azure. Para crear una instancia de contenedor con la CLI de Azure, proporcione un nombre de grupo de recursos, un nombre de instancia de contenedor y una imagen de contenedor de Docker al comando az container create.To create a container instance with the Azure CLI, provide a resource group name, container instance name, and Docker container image to the az container create command. En este inicio rápido, usará la imagen mcr.microsoft.com/azuredocs/aci-helloworld pública.In this quickstart, you use the public mcr.microsoft.com/azuredocs/aci-helloworld image. Esta imagen empaqueta una pequeña aplicación web escrita en Node.js que sirve una página HTML estática.This image packages a small web app written in Node.js that serves a static HTML page.

Puede exponer los contenedores en Internet mediante la especificación para que se abran uno o varios puertos, o la especificación de una etiqueta de nombre DNS o ambas.You can expose your containers to the internet by specifying one or more ports to open, a DNS name label, or both. En este inicio rápido, se implementa un contenedor con una etiqueta de nombre DNS para que la aplicación web sea públicamente accesible.In this quickstart, you deploy a container with a DNS name label so that the web app is publicly reachable.

Ejecute un comando similar al siguiente para iniciar una instancia de contenedor.Execute a command similar to the following to start a container instance. Establezca un valor --dns-name-label que sea único dentro de la región de Azure en la que cree la instancia.Set a --dns-name-label value that's unique within the Azure region where you create the instance. Si recibe un mensaje de error "DNS name label not available" (La etiqueta de nombre DNS no está disponible), pruebe otra etiqueta de nombre DNS diferente.If you receive a "DNS name label not available" error message, try a different DNS name label.

az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label aci-demo --ports 80

En unos segundos, debería recibir una respuesta de la CLI de Azure que indica que la implementación ha finalizado.Within a few seconds, you should get a response from the Azure CLI indicating that the deployment has completed. Compruebe su estado con el comando az container show:Check its status with the az container show command:

az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

Al ejecutar el comando, se muestra el nombre completo del dominio (FQDN) y su estado de aprovisionamiento.When you run the command, the container's fully qualified domain name (FQDN) and its provisioning state are displayed.

FQDN                               ProvisioningState
---------------------------------  -------------------
aci-demo.eastus.azurecontainer.io  Succeeded

Si el estado ProvisioningState del contenedor es Correcto, vaya a su FQDN en el explorador.If the container's ProvisioningState is Succeeded, go to its FQDN in your browser. Si ve una página web parecida a la siguiente, enhorabuena.If you see a web page similar to the following, congratulations! Ha implementado correctamente una aplicación que se ejecuta en un contenedor de Docker en Azure.You've successfully deployed an application running in a Docker container to Azure.

Visualización de una aplicación implementada en Azure Container Instances en el explorador

Si al principio no aparece la aplicación, espere unos segundos mientras se propaga el DNS y, a continuación, pruebe a actualizar el explorador.If at first the application isn't displayed, you might need to wait a few seconds while DNS propagates, then try refreshing your browser.

Extracción de los registros del contenedorPull the container logs

Cuando necesite solucionar problemas de un contenedor o de la aplicación que este ejecuta (o simplemente ver la salida), empiece por ver los registros de la instancia de contenedor.When you need to troubleshoot a container or the application it runs (or just see its output), start by viewing the container instance's logs.

Extraiga los registros de la instancia de contenedor con el comando az container logs:Pull the container instance logs with the az container logs command:

az container logs --resource-group myResourceGroup --name mycontainer

En la salida se muestran los registros del contenedor y se mostrarán las solicitudes HTTP GET generadas al ver la aplicación en el explorador.The output displays the logs for the container, and should show the HTTP GET requests generated when you viewed the application in your browser.

listening on port 80
::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

Flujos de salida como adjuntosAttach output streams

Además de ver los registros, puede asociar la salida estándar local y los flujos de error estándar a los del contenedor.In addition to viewing the logs, you can attach your local standard out and standard error streams to that of the container.

En primer lugar, ejecute el comando az container attach para asociar la consola local a los flujos de salida del contenedor:First, execute the az container attach command to attach your local console to the container's output streams:

az container attach --resource-group myResourceGroup --name mycontainer

Una vez asociados, actualice el explorador varias veces para generar algunas salidas adicionales.Once attached, refresh your browser a few times to generate some additional output. Cuando haya terminado, desconecte la consola con Control+C.When you're done, detach your console with Control+C. Debería ver un resultado similar al siguiente:You should see output similar to the following:

Container 'mycontainer' is in state 'Running'...
(count: 1) (last timestamp: 2019-03-21 17:27:20+00:00) pulling image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:24+00:00) Successfully pulled image "mcr.microsoft.com/azuredocs/aci-helloworld"
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Created container
(count: 1) (last timestamp: 2019-03-21 17:27:27+00:00) Started container

Start streaming logs:
listening on port 80

::ffff:10.240.255.55 - - [21/Mar/2019:17:43:53 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:44:36 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.55 - - [21/Mar/2019:17:47:01 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"
::ffff:10.240.255.56 - - [21/Mar/2019:17:47:12 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"

Limpieza de recursosClean up resources

Cuando haya terminado con el contenedor, puede eliminarlo con el comando az container delete:When you're done with the container, remove it using the az container delete command:

az container delete --resource-group myResourceGroup --name mycontainer

Para comprobar que se ha eliminado el contenedor, ejecute el comando az container list:To verify that the container has been deleted, execute the az container list command:

az container list --resource-group myResourceGroup --output table

El contenedor mycontainer no debe aparecer en la salida del comando.The mycontainer container should not appear in the command's output. Si no cuenta con ningún otro contenedor en el grupo de recursos, no se muestra ninguna salida.If you have no other containers in the resource group, no output is displayed.

Si ha terminado con el grupo de recursos myResourceGroup y todos los recursos que contiene, elimínelo con el comando az group delete:If you're done with the myResourceGroup resource group and all the resources it contains, delete it with the az group delete command:

az group delete --name myResourceGroup

Pasos siguientesNext steps

En este inicio rápido, ha creado una instancia de contenedor de Azure a partir de una imagen de Microsoft pública.In this quickstart, you created an Azure container instance by using a public Microsoft image. Si quiere compilar una imagen de contenedor e implementarla desde un registro de contenedor privado de Azure, vaya al tutorial de Azure Container Instances.If you'd like to build a container image and deploy it from a private Azure container registry, continue to the Azure Container Instances tutorial.

Para probar opciones de ejecución de contenedores en un sistema de orquestación en Azure, consulte los inicios rápidos de Azure Kubernetes Service (AKS).To try out options for running containers in an orchestration system on Azure, see the Azure Kubernetes Service (AKS) quickstarts.