Compartir a través de


Windows y contenedores

Se aplica a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Los contenedores son una tecnología para empaquetar y ejecutar aplicaciones de Windows y Linux en diversos entornos locales y en la nube. Los contenedores proporcionan un entorno ligero y aislado que facilita el desarrollo, implementación y administración de las aplicaciones. Los contenedores se inician y detienen rápidamente, por lo que son ideales para las aplicaciones que necesitan adaptarse rápidamente a la demanda cambiante. La naturaleza ligera de los contenedores también las convierte en una herramienta útil para aumentar la densidad y el uso de la infraestructura.

Gráfico en el que se muestra cómo se pueden ejecutar los contenedores en la nube o de forma local para admitir aplicaciones monolíticas o microservicios escritos en casi cualquier lenguaje.

El ecosistema de contenedores de Microsoft

Microsoft proporciona muchas herramientas y plataformas para ayudarle a desarrollar e implementar aplicaciones en contenedores:

Cómo funcionan los contenedores

Un contenedor es un paquete aislado y ligero para ejecutar una aplicación en el sistema operativo host. Los contenedores se ejecutan sobre el núcleo del sistema operativo anfitrión (que se puede considerar como la estructura subyacente del sistema operativo), como se muestra en el diagrama siguiente.

Diagrama arquitectónico en el que se muestra cómo se ejecutan los contenedores en un nivel superior del kernel

Aunque un contenedor comparte el kernel del sistema operativo host, no obtiene acceso sin restricciones a dicho kernel. En su lugar, el contenedor obtiene una vista aislada (y, en ocasiones, virtualizada) del sistema. Por ejemplo, un contenedor puede tener acceso a una versión virtualizada del sistema de archivos y el registro, pero los cambios solo afectan al contenedor y se descartan cuando se detiene. Para guardar datos, el contenedor puede montar el almacenamiento persistente, como un disco de Azure o un recurso compartido de archivos como Azure Files.

Un contenedor se basa en el kernel, pero el kernel no proporciona todas las API y los servicios que debe ejecutar una aplicación. La mayoría de estas API y servicios proceden de archivos del sistema (bibliotecas) que se ejecutan encima del kernel en modo de usuario. Dado que un contenedor está aislado del entorno de modo de usuario del host, el contenedor necesita su propia copia de estos archivos del sistema en modo de usuario. Estos archivos se empaquetan en algo conocido como imagen base. La imagen base actúa como la capa fundamental en la que se compila el contenedor, lo que proporciona los servicios del sistema operativo no proporcionados por el kernel.

Contenedores frente a máquinas virtuales

A diferencia de un contenedor, una máquina virtual (VM) ejecuta un sistema operativo completo, incluido su propio kernel, como se muestra en el diagrama siguiente.

Diagrama arquitectónico en el que se muestra cómo las máquinas virtuales ejecutan un sistema operativo completo junto al sistema operativo host

Los contenedores y las máquinas virtuales tienen sus usos. De hecho, muchas implementaciones de contenedores usan máquinas virtuales como sistema operativo host en lugar de ejecutarse directamente en el hardware, especialmente cuando se ejecutan contenedores en la nube.

Para obtener más información sobre las similitudes y diferencias de estas tecnologías complementarias, consulte Contenedores frente a máquinas virtuales.

Imágenes del contenedor

Puede crear todos los contenedores a partir de imágenes de contenedor. Una imagen de contenedor es un conjunto de archivos organizados en una pila de capas que se hospeda en el equipo local o en un registro de contenedor remoto. Una imagen de contenedor consta de los archivos del sistema operativo en modo de usuario que la aplicación necesita ejecutar. La imagen también incluye los entornos de ejecución, las dependencias y los archivos de configuración que requiere la aplicación.

Microsoft ofrece varias imágenes (denominadas imágenes base) que puede usar como punto de partida para crear su propia imagen de contenedor:

  • Windows: contiene el conjunto completo de API y servicios del sistema de Windows (menos los roles de servidor).
  • Windows Server: contiene el conjunto completo de API y servicios del sistema de Windows.
  • Windows Server Core: una imagen más pequeña que contiene un subconjunto de las API de Windows Server; es decir, la versión completa de .NET Framework. También incluye la mayoría pero no todos los roles de servidor (por ejemplo, el servidor de fax no está incluido).
  • Nano Server: referente a la imagen de Windows Server más pequeña, compatible con las API de .NET Core y algunas funciones de servidor.

Las imágenes de contenedor se componen de una serie de capas. Cada capa contiene un conjunto de archivos que, cuando se superponen, representan la imagen de contenedor. Debido a la naturaleza en capas de los contenedores, no siempre tiene que tener como destino una imagen base para compilar un contenedor de Windows. En su lugar, puede tener como destino otra imagen que ya contenga el marco que desee. Por ejemplo, el equipo de .NET publica una imagen de .NET Core que incluye el entorno de ejecución de .NET Core. Esto evita que los usuarios tengan que realizar nuevamente el proceso de instalación de .NET Core. En su lugar, pueden volver a usar las capas de esta imagen de contenedor. La imagen de .NET Core está basada en Nano Server.

Para obtener más información, consulte Imágenes base de contenedor.

Usuarios de los contenedores

Contenedores para desarrolladores

Los contenedores ayudan a los desarrolladores a crear y distribuir aplicaciones de mayor calidad, más rápido. Con los contenedores, los desarrolladores pueden crear una imagen de contenedor que se implementa en segundos de forma idéntica en todos los entornos. Los contenedores actúan como un mecanismo sencillo para compartir código entre equipos y arrancar un entorno de desarrollo sin afectar al sistema de archivos del host.

Los contenedores son portátiles y versátiles, pueden ejecutar aplicaciones escritas en cualquier lenguaje y son compatibles con cualquier equipo que ejecute Windows 10, versión 1607 o posterior, o Windows Server 2016 o posterior. Los desarrolladores pueden crear y probar contenedores localmente en su equipo portátil o de escritorio y luego implementar esa misma imagen de contenedor en la nube privada, la nube pública o el proveedor de servicios de su empresa. La agilidad natural de los contenedores admite patrones de desarrollo de aplicaciones modernas en entornos de nube virtualizados y a gran escala. La ventaja más útil para los desarrolladores es quizás la capacidad de aislar el entorno para que la aplicación siempre reciba la versión de las bibliotecas que se especifique, a fin de evitar conflictos con las dependencias.

Contenedores para los profesionales de TI

Los contenedores ayudan a los administradores a crear una infraestructura que sea más fácil de actualizar y mantener, y que el uso de los recursos de hardware sea más completo. Los profesionales de TI pueden utilizar los contenedores para ofrecer entornos estandarizados para su desarrollo, sus controles de calidad y sus equipos de producción. Mediante el uso de contenedores, los administradores de sistemas abstraen las diferencias en las instalaciones de sistemas operativos y la infraestructura subyacente.

También puede usar el modo interactivo de contenedores para ejecutar instancias en conflicto de una herramienta de línea de comandos en el mismo sistema.

Orquestación de contenedores

Los orquestadores son una parte fundamental de la infraestructura al configurar un entorno basado en contenedores. Los orquestadores son esenciales al administrar aplicaciones en contenedores a escala. Aunque puede administrar algunos contenedores manualmente mediante Docker y Windows, las aplicaciones suelen usar cinco, diez o incluso cientos de contenedores, lo que hace que los orquestadores sean indispensables.

Los orquestadores de contenedor se crearon para ayudar a administrar contenedores a escala y en producción. Los orquestadores proporcionan las funcionalidades para:

Los orquestadores le ayudan a aumentar el tamaño de las aplicaciones en contenedores a escala, lo que proporciona funcionalidades para:

  • Implementación a escala
  • Programación de cargas de trabajo
  • Supervisión de estado
  • Conmutación por error cuando se produce un error en un nodo
  • Escalado o reducción vertical
  • Funciones de red
  • Detección de servicios
  • Coordinación de las actualizaciones de aplicaciones
  • Afinidad de nodos de clúster

Hay muchos orquestadores diferentes que puede utilizar con los contenedores de Windows. Estas son las opciones que proporciona Microsoft:

Prueba de contenedores en Windows

Para empezar a trabajar con contenedores en Windows Server o Windows 10, consulte el siguiente artículo:

Para obtener ayuda para decidir qué servicios de Azure son adecuados para su escenario, consulte Servicios de contenedor de Azure y Elección de los servicios de Azure que se van a usar para hospedar la aplicación.

Recursos

Para ver los recursos para usar contenedores de Windows Server, consulte los siguientes recursos: