Ejecución de un contenedor personalizado en Azure
Azure App Service proporciona las pilas de aplicaciones predefinidas en Windows, como ASP.NET o Node.js, que se ejecutan en IIS. Sin embargo, las pilas de aplicaciones preconfiguradas bloquean el sistema operativo e impiden el acceso de bajo nivel. Los contenedores de Windows personalizados no tienen estas restricciones y permiten a los desarrolladores personalizar completamente los contenedores y proporcionar a las aplicaciones contenedorizadas acceso total a la funcionalidad de Windows.
En este inicio rápido se muestra cómo implementar una aplicación ASP.NET, que está en una imagen de Windows, en Azure Container Registry desde Visual Studio. La aplicación se ejecuta en un contenedor personalizado en Azure App Service.
Requisitos previos
Para realizar este tutorial:
- Instalar Docker para Windows.
- Cambiar Docker para ejecutar contenedores de Windows.
- Instale Visual Studio 2022 con las cargas de trabajo ASP.NET y desarrollo web y desarrollo de Azure. En Visual Studio 2022 Community, asegúrese de que el componente de plantillas de proyecto y elemento de .NET Framework está seleccionado con la carga de trabajo de ASP.NET y desarrollo web. Si ya ha instalado Visual Studio 2022:
- Para instalar las actualizaciones más recientes de Visual Studio, seleccione Ayuda > Buscar actualizaciones.
- Para agregar las cargas de trabajo en Visual Studio, seleccione Herramientas > Obtener herramientas y características.
Creación de una aplicación web de ASP.NET
Cree una aplicación web ASP.NET siguiendo estos pasos:
Abra Visual Studio y seleccione Crear un proyecto.
En Crear un proyecto, busque y elija Aplicación web ASP.NET Core (.NET Framework) para C# y, a continuación, seleccione Siguiente.
En Configurar el nuevo proyecto, en Nombre de proyecto, asigne el nombre de myfirstazurewebapp a la aplicación. En Marco, seleccione .NET Framework 4.8 y después Crear.
Puede implementar cualquier tipo de aplicación web de ASP.NET en Azure. Para este inicio rápido, elija la plantilla MVC.
En Autenticación, seleccione Ninguna. En Avanzadas, seleccione Compatibilidad con Docker y desactive Configurar para HTTPS. Seleccione Crear.
Si el archivo Dockerfile no se abre automáticamente, ábralo desde el Explorador de soluciones.
Necesita una imagen principal compatible. Cambie la imagen primaria reemplazando la línea
FROMcon el código siguiente y guarde el archivo:FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019En el menú de Visual Studio, seleccione Depurar > Iniciar sin depurar para ejecutar la aplicación web localmente.
Publicación en Azure Container Registry
En Explorador de soluciones, haga clic con el botón derecho en el proyecto myfirstazurewebapp y seleccione Publicar.
En Destino, seleccione Container Registry para Docker y, espués, haga clic en Siguiente.
En Destino específico, seleccione Azure Container Registry y, después, haga clic en Siguiente.
En Publicar, asegúrese de que se ha seleccionado la suscripción correcta. En Registros de contenedor, seleccione el botón + para crear una nueva instancia de Azure Container Registry.
En Crear nuevo, asegúrese de que se ha elegido la suscripción correcta. En Grupo de recursos, seleccione Nuevo y escriba myResourceGroup como nombre y haga clic en Aceptar. En SKU, seleccione Básico. En Ubicación del Registro, seleccione una ubicación del Registro y, a continuación, haga clic en Crear.
En Publicar, en Container Registry, seleccione el registro que creó y, después, Finalizar.
Espere a que la implementación se complete. La página Publicar muestra ahora el nombre del repositorio. Seleccione el botón de copia para copiar el repositorio para su uso posterior.
Creación de una aplicación de contenedor de Windows
Inicie sesión en Azure Portal.
Elija Crear un recurso en la esquina superior izquierda de Azure Portal.
En Servicios populares, seleccione Crear en Aplicación web.
En Crear aplicación web, elija la suscripción y un grupo de recursos. Si es necesario, puede crear un grupo de recursos.
Proporcione un nombre de aplicación, como win-container-demo. Elija Contenedor de Docker para Publicar y Windows para Sistema operativo. Seleccione Siguiente: Docker para continuar.

En Origen de imagen, elija Docker Hub y en Imagen y etiqueta, escriba el nombre del repositorio que copió en Publicar en Azure Container Registry.

Si tiene una imagen personalizada de la aplicación web en otra parte como, por ejemplo, en Azure Container Registry o en cualquier otro repositorio privado, puede configurarla aquí.
Seleccione Revisar y crear y, después, Crear y espere que Azure cree los recursos necesarios.
Desplazamiento a la aplicación de contenedor
Una vez completada la operación de Azure, se muestra un cuadro de notificación.

Haga clic en Ir al recurso.
En la información general de este recurso, siga el vínculo situado junto a URL.
Se abre una nueva página del explorador en la página siguiente:

Espere unos minutos e inténtelo de nuevo, hasta que llegue a la página principal predeterminada de ASP.NET:

¡Enhorabuena! Ya está ejecutando el primer contenedor de Windows personalizado en Azure App Service.
Consulta de los registros de inicio del contenedor
El contenedor de Windows puede tardar un tiempo en cargarse. Para ver el progreso, vaya a la siguiente dirección URL sustituyendo <app_name> por el nombre de la aplicación.
https://<app_name>.scm.azurewebsites.net/api/logstream
Los registros transmitidos tienen este aspecto:
2018-07-27T12:03:11 Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully
Actualización local y nueva implementación
En Visual Studio, en el Explorador de soluciones, abra Vistas > Inicio > Index.cshtml.
Busque la etiqueta HTML
<div class="jumbotron">en la parte superior y reemplace el elemento entero por el código siguiente:<div class="jumbotron"> <h1>ASP.NET in Azure!</h1> <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p> </div>Para volver a realizar la implementación en Azure, haga clic con el botón derecho en el proyecto myfirstazurewebapp, en el Explorador de soluciones y elija Publicar.
En la página de publicación, seleccione Publicar y espere hasta que la publicación se complete.
Para indicar a App Service que extraiga la nueva imagen de Docker Hub, reinicie la aplicación. Volviendo a la página de aplicación en el portal, haga clic en Reiniciar > Sí.

Vuelva a desplazarse a la aplicación de contenedor. Al actualizar la página web, la aplicación debe volver a la página "Iniciando" al principio y luego volver a mostrar la página web actualizada transcurridos unos minutos.

Pasos siguientes
O bien, eche un vistazo a otros recursos:
App Service en Linux proporciona pilas de aplicaciones predefinidas en Linux con compatibilidad con lenguajes como .NET, PHP o Node.js entre otros. También puede usar una imagen personalizada de Docker para ejecutar la aplicación web en una pila de aplicaciones aún sin definir en Azure. En este inicio rápido se muestra cómo implementar una imagen desde Azure Container Registry (ACR) en App Service.
Requisitos previos
- Una cuenta de Azure
- Docker
- Visual Studio Code
- La extensión de Azure App Service para VS Code. Puede usar esta extensión para crear, administrar e implementar Web Apps de Linux en la Plataforma como servicio (PaaS) de Azure.
- La extensión de Docker para VS Code. Puede usar esta extensión para simplificar la administración de imágenes y comandos locales de Docker e implementar imágenes de aplicaciones compiladas en Azure.
Creación de un registro de contenedor
En este inicio rápido, se usa Azure Container Registry como registro de su elección. Puede usar otros registros, pero los pasos pueden diferir ligeramente.
Cree un registro de contenedor según las instrucciones que se indican en Inicio rápido: Creación de un instancia de Azure Container Registry mediante Azure Portal.
Importante
Asegúrese de establecer la opción Usuario administrador en Habilitar al crear el registro de contenedor de Azure. También puede establecerla en la sección Claves de acceso de la página de registro en Azure Portal. Esta opción de configuración es necesaria para el acceso a App Service. Para obtener información sobre la identidad administrada, consulte Implementación desde el tutorial de ACR.
Iniciar sesión
Inicie Visual Studio Code.
Seleccione el logotipo de Azure en la barra de actividades, vaya al explorador APP SERVICE, después, seleccione Iniciar sesión en Azure y siga las instrucciones.

En la barra de estado de la parte inferior, compruebe la dirección de correo electrónico de la cuenta de Azure. Se debe mostrar la suscripción en el explorador APP SERVICE.
En la barra de actividades, seleccione el logotipo de Docker. En el explorador REGISTROS, compruebe que aparece el registro de contenedor que ha creado.

Comprobación de los requisitos previos
Compruebe que tiene Docker instalado y en ejecución. El siguiente comando mostrará la versión de Docker si se está ejecutando.
docker --version
Creación y compilación de una imagen
- En Visual Studio Code, abra una carpeta vacía y agregue un archivo llamado
Dockerfile. En el archivo Dockerfile, pegue el contenido en función del marco de lenguaje deseado:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts
ENV PORT 8080
EXPOSE 8080
ENV ASPNETCORE_URLS "http://*:${PORT}"
ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]
En este archivo Dockerfile, la imagen primaria es uno de los contenedores de .NET integrados de App Service. Puede encontrar los archivos de código fuente en el repositorio de GitHub Azure-App-Service/ImageBuilder, en GenerateDockerFiles/dotnetcore. Su archivo Dockerfile copia una aplicación sencilla de .NET en /defaulthome/hostingstart. El archivo Dockerfile simplemente inicia esa aplicación.
Abra la paleta de comandos y escriba Docker Images: Build Image (Imágenes de Docker: compilar imagen). Pulse Entrar para ejecutar el comando.
En el cuadro de etiqueta de imagen, especifique la etiqueta que desee en el formato siguiente:
<acr-name>.azurecr.io/<image-name>/<tag>, donde<acr-name>es el nombre del registro de contenedor que ha creado. Presione ENTRAR.Cuando la imagen termine de compilarse, haga clic en Actualizar en la parte superior del explorador IMÁGENES y compruebe que la imagen se ha compilado correctamente.

Implementación en el registro de contenedor
En la barra de actividades, haga clic en el icono de Docker. En el explorador IMÁGENES, busque la imagen que acaba de compilar.
Expanda la imagen, haga clic con el botón derecho en la etiqueta que desee y haga clic en Insertar.
Asegúrese de que la etiqueta de imagen comienza por
<acr-name>.azurecr.ioy pulse Entrar.Cuando Visual Studio Code finalice la inserción de la imagen en el registro de contenedor, haga clic en Actualizar en la parte superior del explorador REGISTROS y compruebe que la imagen se ha insertado correctamente.

Implementación en App Service
- En el explorador REGISTROS, expanda la imagen, haga clic con el botón derecho en la etiqueta y haga clic en Deploy image to Azure App Service (Implementar imagen en Azure App Service).
- Siga las indicaciones para elegir una suscripción, un nombre de aplicación globalmente único, un grupo de recursos y un plan de App Service. Elija B1 Básico como plan de tarifa y una región cercana.
Después de la implementación, la aplicación está disponible en http://<app-name>.azurewebsites.net.
Un grupo de recursos es una colección con nombre de todos los recursos de la aplicación en Azure. Por ejemplo, un grupo de recursos puede contener una referencia a un sitio web, una base de datos y una función de Azure.
Un plan de App Service define los recursos físicos que se van a usar para hospedar el sitio web. Este inicio rápido usa un plan de hospedaje básico en la infraestructura de Linux, lo que significa que el sitio se hospedará en una máquina Linux junto con otros sitios web. Si empieza con el plan básico, puede usar Azure Portal para escalar verticalmente de modo que el suyo sea el único sitio que se ejecute en una máquina. Para conocer los precios, consulte Precios de App Service.
Examinar el sitio web
El panel Salida muestra el estado de las operaciones de implementación. Cuando finalice la operación, haga clic en Abrir sitio en la notificación emergente para abrir el sitio en el explorador.
Pasos siguientes
Ha completado correctamente este inicio rápido.
La aplicación de App Service extrae del registro de contenedor cada vez que se inicia. Si recompila la imagen, solo tiene que insertarla en el registro de contenedor y la aplicación extrae la imagen actualizada cuando se reinicia. Para indicar a la aplicación que extraiga la imagen actualizada inmediatamente, reiníciela.
Otras extensiones de Azure:
- Cosmos DB
- Funciones de Azure
- Herramientas de la CLI de Azure
- Herramientas de Azure Resource Manager
- El paquete de extensiones Azure Tools incluye todas las extensiones anteriores.