Herramientas de contenedor de Visual Studio para Docker

Las herramientas incluidas en Visual Studio para el desarrollo con contenedores de Docker son fáciles de usar y simplifican en gran medida la compilación, la depuración y la implementación de aplicaciones contenedorizadas. Puede trabajar con un contenedor en un único proyecto o usar la orquestación de contenedores con Docker Compose o Service Fabric para trabajar con varios servicios en contenedores.

Requisitos previos

Compatibilidad con Docker en Visual Studio

La compatibilidad con Docker está disponible para proyectos de ASP.NET, ASP.NET Core y Azure Functions, así como para proyectos de consola de .NET Core y .NET Framework.

La compatibilidad con Docker en Visual Studio ha cambiado a lo largo de una serie de versiones en respuesta a las necesidades del cliente. Hay dos niveles de compatibilidad con Docker que puede agregar a un proyecto, y las opciones admitidas varían según el tipo de proyecto y la versión de Visual Studio. Con algunos tipos de proyectos admitidos, si simplemente quiere un contenedor para un único proyecto, sin usar la orquestación, puede hacerlo si agrega compatibilidad con Docker. El siguiente nivel es la compatibilidad con la orquestación de contenedores, que agrega los archivos de compatibilidad adecuados para el orquestador determinado que elija.

Con Visual Studio 2017, puede usar Docker Compose y Service Fabric como servicios de orquestación de contenedores.

Nota

Si usa una versión de Visual Studio 2017 anterior a la 15.8 o bien utiliza la plantilla de proyecto de .NET Framework (no .NET Core), al agregar compatibilidad con Docker se agrega automáticamente compatibilidad con la orquestación con Docker Compose.

Requisitos previos

Compatibilidad con Docker en Visual Studio

La compatibilidad con Docker está disponible para proyectos ASP.NET, proyectos ASP.NET Core y proyectos de consola de .NET Core y .NET Framework.

La compatibilidad con Docker en Visual Studio ha cambiado a lo largo de una serie de versiones en respuesta a las necesidades del cliente. Hay dos niveles de compatibilidad con Docker que puede agregar a un proyecto, y las opciones admitidas varían según el tipo de proyecto y la versión de Visual Studio. Con algunos tipos de proyectos admitidos, si simplemente quiere un contenedor para un único proyecto, sin usar la orquestación, puede hacerlo si agrega compatibilidad con Docker. El siguiente nivel es la compatibilidad con la orquestación de contenedores, que agrega los archivos de compatibilidad adecuados para el orquestador determinado que elija.

Con Visual Studio 2019, puede usar Docker Compose, Kubernetes y Service Fabric como servicios de orquestación de contenedores.

Nota

Si va a usar la plantilla completa del proyecto de consola de .NET Framework, la opción admitida es Agregar compatibilidad con el orquestador de contenedores después de la creación del proyecto, con opciones para usar Service Fabric o Docker Compose. La adición de compatibilidad durante la creación del proyecto y la adición de compatibilidad con Docker para un único proyecto sin orquestación no son opciones disponibles.

Las versiones 16.4 y posteriores de Visual Studio 2019 incluyen la ventana Contenedores, en la que puede ver los contenedores en ejecución, examinar las imágenes disponibles, ver las variables de entorno, los registros y las asignaciones de puertos, inspeccionar el sistema de archivos, adjuntar un depurador o abrir una ventana de terminal dentro del entorno de un contenedor. Consulte Uso de la ventana Contenedores.

Requisitos previos

Compatibilidad con Docker en Visual Studio

La compatibilidad con Docker está disponible para proyectos ASP.NET, proyectos ASP.NET Core y proyectos de consola de .NET Core y .NET Framework.

La compatibilidad con Docker en Visual Studio ha cambiado a lo largo de una serie de versiones en respuesta a las necesidades del cliente. Hay dos niveles de compatibilidad con Docker que puede agregar a un proyecto, y las opciones admitidas varían según el tipo de proyecto y la versión de Visual Studio. Con algunos tipos de proyectos admitidos, si simplemente quiere un contenedor para un único proyecto, sin usar la orquestación, puede hacerlo si agrega compatibilidad con Docker. El siguiente nivel es la compatibilidad con la orquestación de contenedores, que agrega los archivos de compatibilidad adecuados para el orquestador determinado que elija.

Con Visual Studio 2022, puede usar Docker Compose o Service Fabric como servicios de orquestación de contenedores.

Nota

Si va a usar la plantilla completa del proyecto de consola de .NET Framework, la opción admitida es Agregar compatibilidad con el orquestador de contenedores después de la creación del proyecto, con opciones para usar Service Fabric o Docker Compose. La adición de compatibilidad durante la creación del proyecto y la adición de compatibilidad con Docker para un único proyecto sin orquestación no son opciones disponibles.

En Visual Studio 2022 se incluye la ventana Contenedores, en la que puede ver los contenedores en ejecución, examinar las imágenes disponibles, ver las variables de entorno, los registros y las asignaciones de puertos, inspeccionar el sistema de archivos, adjuntar un depurador o abrir una ventana de terminal dentro del entorno de un contenedor. Consulte Uso de la ventana Contenedores.

Adición de compatibilidad con Docker

Puede habilitar la compatibilidad con Docker durante la creación del proyecto si selecciona Enable Docker Support (Habilitar la compatibilidad con Docker) al crear un proyecto, como se muestra en la captura de pantalla siguiente:

Captura de pantalla que muestra cómo habilitar la compatibilidad con DockerS para la aplicación web de ASP.NET Core en Visual Studio.

Captura de pantalla que muestra cómo habilitar la compatibilidad con Docker para la aplicación web de ASP.NET Core en Visual Studio.

Captura de pantalla que muestra cómo habilitar la compatibilidad con Docker para la aplicación web de ASP.NET Core en Visual Studio.

Nota

Para los proyectos de .NET Framework (no incluye .NET Core), solo están disponibles los contenedores de Windows.

Puede agregar compatibilidad con Docker a un proyecto existente si selecciona Agregar > Compatibilidad con Docker en el Explorador de soluciones. Los comandos Agregar > Compatibilidad con Docker y Agregar > Compatibilidad con el orquestador de contenedores se encuentran en el menú contextual del nodo de proyecto de un proyecto de ASP.NET Core en el Explorador de soluciones, como se muestra en la captura de pantalla siguiente:

Captura de pantalla que muestra cómo agregar la opción de menú de compatibilidad con Docker en Visual Studio.

Captura de pantalla que muestra cómo agregar la opción de menú de compatibilidad con Docker en Visual Studio.

Al agregar o habilitar la compatibilidad con Docker, Visual Studio agrega lo siguiente al proyecto:

  • un archivo Dockerfile
  • un archivo .dockerignore
  • una referencia de paquete NuGet a Microsoft.VisualStudio.Azure.Containers.Tools.Targets

El Dockerfile que agregue se parecerá al código a continuación. En este ejemplo, el proyecto se denominó WebApplication-Docker y eligió contenedores de Linux:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

Nota

Al habilitar la compatibilidad con Docker durante la creación de un proyecto de ASP.NET (.NET Framework, no un proyecto de .NET Core) como se muestra en la siguiente captura de pantalla, también se agrega compatibilidad con la orquestación de contenedores.

Captura de pantalla que muestra cómo habilitar la compatibilidad con Docker Compose para un proyecto ASP.NET.

Uso de la ventana Contenedores

En la ventana Contenedores puede consultar los contenedores y las imágenes en la máquina, además de lo que sucede con ellos. Puede ver el sistema de archivos, los volúmenes montados, las variables de entorno y los puertos usados, además de examinar los archivos de registro.

Use el inicio rápido (Ctrl+Q) y escriba containers para abrir la ventana Contenedores. Puede usar los controles de acoplamiento para colocar la ventana donde desee. Debido al ancho de la ventana, funciona mejor cuando se acopla en la parte inferior de la pantalla.

Seleccione un contenedor y use las pestañas para ver la información disponible. Para comprobarlo, ejecute la aplicación habilitada para Docker, abra la pestaña Archivos y expanda la carpeta de aplicaciones a fin de ver la aplicación implementada en el contenedor.

Captura de pantalla de la ventana Contenedores.

Captura de pantalla de la ventana Contenedores.

Para obtener más información, consulte Uso de la ventana Contenedores.

Compatibilidad con Docker Compose

Cuando quiera crear una solución de varios contenedores mediante Docker Compose, agregue a sus proyectos compatibilidad con la orquestación de contenedores. De esta manera podrá ejecutar y depurar un grupo de contenedores (una solución completa o un grupo de proyectos) al mismo tiempo si se definen en el mismo archivo docker-compose.yml.

Para agregar compatibilidad con la orquestación de contenedores mediante Docker Compose, haga clic con el botón derecho en la solución o el nodo del proyecto en el Explorador de soluciones y elija Agregar > Compatibilidad con la orquestación de contenedores. A continuación, elija Docker Compose para administrar los contenedores.

Después de agregar al proyecto compatibilidad con la orquestación de contenedores, verá que se agrega un archivo Dockerfile al proyecto (si no había ya uno) y una carpeta docker-compose a la solución en el Explorador de soluciones, tal y como se muestra aquí:

Captura de pantalla de archivos de Docker en el Explorador de soluciones de Visual Studio.

Captura de pantalla de archivos de Docker en el Explorador de soluciones de Visual Studio.

Si docker-compose.yml ya existe, Visual Studio le agrega simplemente las líneas de código de configuración necesarias.

Repita el proceso con los otros proyectos que quiera controlar mediante Docker Compose.

Si trabaja con un gran número de servicios, puede seleccionar el subconjunto de servicios que quiere iniciar en la sesión de depuración para ahorrar tiempo y recursos informáticos. Consulte Administración de perfiles de inicio para Docker Compose.

Compatibilidad con Service Fabric

Con las herramientas de Service Fabric en Visual Studio, puede desarrollar y depurar en Azure Service Fabric, ejecutar y depurar localmente e implementar en Azure.

La versión 15.9 y posterior de Visual Studio 2017 con la carga de trabajo de desarrollo de Azure instalada admite el desarrollo de microservicios en contenedores con contenedores de Windows y orquestación de Service Fabric.

Visual Studio 2019 y versiones posteriores admiten el desarrollo de microservicios en contenedores mediante contenedores de Windows y la orquestación de Service Fabric.

Para ver un tutorial detallado, consulte Tutorial: Implementación de una aplicación .NET de un contenedor de Windows en Azure Service Fabric.

Para más información sobre Azure Service Fabric, consulte Service Fabric.

Entrega continua e integración continua (CI/CD)

Visual Studio se integra fácilmente con Azure Pipelines para la integración continua y automatizada y la entrega de cambios en el código y la configuración del servicio. Para comenzar, consulte Create your first pipeline (Creación de su primera canalización).

Para Service Fabric, consulte Tutorial: Implementación de la aplicación de ASP.NET Core en Azure Service Fabric mediante Azure DevOps Projects.

Pasos siguientes

Para más información sobre los servicios de implementación y el uso de herramientas de Visual Studio para trabajar con contenedores, lea los artículos siguientes:

Depuración de aplicaciones en un contenedor de Docker local

Implementación de un contenedor ASP.NET en un registro de contenedor con Visual Studio