Introducción a .NET y Docker

.NET Core puede ejecutarse con facilidad en un contenedor de Docker. Los contenedores proporcionan una manera ligera de aislar la aplicación del resto del sistema host, con tan solo compartir el kernel y usar los recursos proporcionados a la aplicación. Si no está familiarizado con Docker, se recomienda encarecidamente que lea la documentación de introducción a Docker.

Para más información sobre cómo instalar Docker, vea la página de descarga de Docker Desktop: Community Edition.

Conceptos básicos de Docker

Hay algunos conceptos con los que debe estar familiarizado. El cliente de Docker tiene una CLI que puede usar para administrar imágenes y contenedores. Como se mencionó anteriormente, debe dedicar tiempo a leer la documentación de introducción a Docker.

Imágenes

Una imagen es una colección ordenada de los cambios del sistema de archivos que forman la base de un contenedor. La imagen no tiene ningún estado y es de solo lectura. La mayor parte del tiempo, una imagen se basa en otra imagen, pero con alguna personalización. Por ejemplo, al crear una imagen nueva para una aplicación, esta se basaría en una imagen existente que ya contiene el entorno de ejecución de .NET Core.

Dado que los contenedores se crean a partir de imágenes, estas tienen un conjunto de parámetros de ejecución (por ejemplo, un archivo ejecutable de inicio) que se ejecutan cuando se inicia el contenedor.

Contenedores

Un contenedor es una instancia ejecutable de una imagen. Al crear la imagen, implementa la aplicación y sus dependencias. Después, se pueden crear instancias de varios contenedores, cada una de ellas aisladas entre sí. Cada instancia de contenedor tiene su sistema de archivos, memoria e interfaz de red propios.

Registros

Los registros de contenedor son una colección de repositorios de imágenes. Puede basar sus imágenes en una imagen del registro. Puede crear contenedores directamente a partir de una imagen en un registro. La relación entre los contenedores, las imágenes y los registros de Docker es un concepto importante a la hora de diseñar y compilar aplicaciones o microservicios en contenedores. Este enfoque reduce en gran medida el tiempo que transcurre entre el desarrollo y la implementación.

Docker tiene un registro público hospedado en Docker Hub que puede usar. Las imágenes relacionadas con .NET Core aparecen en Docker Hub.

El registro de contenedor de Microsoft (MCR) es el origen oficial de las imágenes de contenedor proporcionadas por Microsoft. El MCR se basa en Azure CDN para proporcionar imágenes replicadas globalmente. Sin embargo, el MCR no tiene un sitio web público, y la manera principal de obtener información sobre las imágenes de contenedor proporcionadas por Microsoft es en las páginas de Microsoft Docker Hub.

Dockerfile

Un archivo Dockerfile es aquel que define un conjunto de instrucciones que crea una imagen. Cada instrucción de Dockerfile crea una capa en la imagen. Por lo general, cuando se recompila la imagen, solo se recompilan las capas que han cambiado. El Dockerfile se puede distribuir a otros usuarios, para que puedan recrear una imagen de la misma manera que usted. Aunque esto le permite distribuir las instrucciones sobre cómo crear la imagen, el método principal para distribuir la imagen consiste en publicarla en un registro.

Imágenes de .NET Core

Las imágenes oficiales de Docker en .NET Core se publican en el registro de contenedor de Microsoft (MCR) y se pueden encontrar en el repositorio de Docker Hub para Microsoft .NET Core. Cada repositorio contiene imágenes para diferentes combinaciones de .NET (SDK o Runtime) y del sistema operativo que puede usar.

Microsoft ofrece imágenes que se adaptan a escenarios específicos. Por ejemplo, el repositorio de ASP.NET Core proporciona imágenes que se compilan para ejecutar aplicaciones de ASP.NET Core en producción.

Servicios de Azure

Varios servicios de Azure admiten contenedores. Cree una imagen de Docker para la aplicación e impleméntela en alguno de los siguientes servicios:

  • Azure Kubernetes Service (AKS)
    Escale y organice contenedores de Linux mediante Kubernetes.

  • Azure App Service
    Implemente aplicaciones web o API con contenedores de Linux en un entorno PaaS.

  • Azure Container Instances
    Hospede el contenedor en la nube sin ningún servicio de administración de nivel superior.

  • Azure Batch
    Ejecute trabajos de proceso repetitivos mediante contenedores.

  • Azure Service Fabric
    Migre las aplicaciones de .NET mediante lift-and-shift y modernícelas a microservicios mediante contenedores de Windows Server.

  • Azure Container Registry
    Almacene y administre imágenes de contenedor en todos los tipos de implementaciones de Azure.

Pasos siguientes