Preparación de un host de Windows Server 2019 para la implementación de contenedores
Nota:
Para este módulo de Microsoft Learn, todos los ejemplos se realizarán con la CLI de Docker. Estos comandos deben funcionar en Windows 10 y 11 con Docker Desktop, así como en Windows Server con Moby o MCR. Los entornos con contenedor tendrán otras opciones de la CLI y los comandos variarán.
El administrador de Windows Server de Contoso necesita comprender y obtener imágenes base de contenedor, así como aprender a determinar qué imágenes base de contenedor están disponibles y son apropiadas para usar y a extraer las imágenes base de forma local. De este modo, el administrador puede crear y ejecutar los contenedores necesarios.
Descarga de imágenes basadas en contenedor
Después de instalar el runtime de contenedor elegido, el siguiente paso es extraer una imagen base, que se usa para proporcionar una capa básica de servicios de sistema operativo para el contenedor. A continuación, puede crear y ejecutar un contenedor, que se basa en la imagen base.
Una imagen base de contenedor incluye:
Los archivos de sistema operativo del modo de usuario necesarios para admitir la aplicación aprovisionada.
Cualquier archivo o dependencia del entorno de ejecución que requiera la aplicación.
Cualquier otro archivo de configuración que la aplicación necesite para aprovisionarse y ejecutarse correctamente.
Microsoft proporciona las imágenes base de SO de la tabla siguiente como punto de partida para crear su propia imagen de contenedor.
Nombre de la imagen base | Detalles |
---|---|
Server Core | Una imagen que contiene un subconjunto de las interfaces de programación de aplicaciones (API) de Windows Server, como la versión completa de .NET Framework. También incluye la mayoría de los roles de servidor. Esta imagen es ideal para escenarios en los que una aplicación existente se está "contenedorizando". |
Nano Server | La imagen de Windows Server más pequeña, con compatibilidad con las API de .NET y algunos roles de servidor. Esta imagen requiere que la aplicación se escriba para Nano Server y es ideal para las nuevas aplicaciones que dependen de Windows. |
Windows | Contiene el conjunto completo de API y servicios del sistema de Windows; pero no contiene roles de servidor. Esta imagen se ha reemplazado por la imagen de servidor a partir de Windows Server 2022. |
Server | De forma similar a la imagen de Windows, esta imagen base contiene el conjunto completo de API de Windows Server y servicios del sistema. Esto da como resultado una imagen de contenedor más grande, pero una mayor compatibilidad con las aplicaciones. Esta imagen es ideal para escenarios en los que se está contenedorizando una aplicación existente, pero la imagen de Server Core no proporciona las dependencias necesarias para la aplicación. |
Nota:
La versión del sistema operativo host de Windows debe coincidir con la versión del sistema operativo del contenedor. Para ejecutar un contenedor basado en una compilación más reciente de Windows, debe asegurarse de que está instalada en el host una versión del sistema operativo equivalente.
Si el servidor host contiene una versión más reciente del sistema operativo, puede usar el modo de aislamiento de Hyper-V para ejecutar una versión anterior de los contenedores de Windows.
Para obtener más información sobre la compatibilidad de imágenes de contenedor y host, consulte Compatibilidad de versiones de contenedor de Windows.
Puede encontrar y descargar imágenes base a través de Microsoft Container Registry. Utilice el docker pull para descargar una imagen base específica.
Importante
Las imágenes base del sistema operativo proporcionan los componentes del sistema operativo Windows Server y sus roles de servidor. Microsoft también proporciona imágenes específicas para diferentes marcos ya instalados, como IIS, .Net Framework y .Net.
Al escribir el docker pull, especifique la versión que coincida con la versión del equipo host. Por ejemplo, si quisiera extraer una imagen de Nano Server basada en Windows Server 2022, usaría el siguiente comando:
docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022
Si quisiera extraer una imagen de Windows server 2019 Server Core, usaría el siguiente comando:
docker pull mcr.microsoft.com/windows/servercore:ltsc2019
Después de descargar las imágenes base necesarias para sus contenedores, puede verificar las imágenes que están disponibles localmente y mostrar la información de los metadatos escribiendo el siguiente comando:
docker images
Ejecución de un contenedor de Windows
En entornos de producción a gran escala, lo más probable es que interactúe con contenedores a través de un orquestador de contenedores, como Kubernetes o Docker Swarm. En entornos más pequeños y de desarrollo y pruebas, puede crear, quitar y administrar contenedores en Windows Server a través de la CLI.
También puede examinar el Docker Hub o el Container Registry de Microsoft para acceder a, y extraer, imágenes pregeneradas. Hay dos alternativas principales para compilar una imagen de contenedor para hospedar la aplicación:
Cree una imagen de contenedor mediante herramientas de desarrollo. Cuando un desarrollador escribe la aplicación, se puede empaquetar directamente desde el IDE del desarrollador, como Visual Studio.
Cree una imagen de contenedor con un dockerfile. Un dockerfile es un documento de texto que contiene todos los comandos a los que un usuario podría llamar en la línea de comandos para ensamblar una imagen. Herramientas como Visual Studio compilan el dockerfile de forma nativa para una nueva aplicación, pero tiene la opción de compilar manualmente su propio dockerfile.
Nota:
Hay una opción adicional para crear imágenes de contenedor basadas en un contenedor en ejecución. Esto es similar a crear una imagen dorada a partir de una máquina virtual en ejecución. No se recomienda este método. En la sección siguiente se proporcionarán más detalles.
Automatización de la creación de imágenes de contenedor mediante dockerfile en Windows
El motor de Docker Desktop y MCR incluye herramientas para automatizar el proceso de creación de imágenes de contenedor. Aunque puede crear imágenes de contenedor manualmente, la adopción de un proceso automatizado de creación de imágenes proporciona muchas ventajas, entre las que se incluyen:
La capacidad de almacenar imágenes de contenedor como código.
La nueva creación rápida y precisa de imágenes de contenedor para fines de mantenimiento y actualización.
Integración continua entre las imágenes del contenedor y el ciclo de desarrollo.
Nota:
Moby y contenedor no incluyen una solución de compilación de imágenes nativas. Como alternativa, puede usar un servicio de compilación de imágenes de contenedor, como Azure Container Registry (ACR).
Los componentes de Docker que impulsan esta automatización son el archivo de texto dockerfile y el comando:
El archivo de texto dockerfile contiene las instrucciones necesarias para crear una nueva imagen del contenedor. Estas instrucciones incluyen la identificación de una imagen existente que se usará como base, los comandos que se ejecutarán durante el proceso de creación de la imagen y un comando que se ejecutará cuando se implementen instancias nuevas de la imagen del contenedor.
El comando de compilación de docker consume un archivo dockerfile y luego desencadena el proceso de creación de imágenes.
Administración de contenedores mediante la CLI
Use los siguientes comandos para crear y administrar los contenedores e imágenes de contenedor:
- El comando docker images enumera las imágenes disponibles en su host de contenedores. Una de las razones para hacerlo es utilizar las imágenes de contenedor existentes como base para los nuevos contenedores:
docker images
- El comando docker run crea un contenedor utilizando una imagen de contenedor. Por ejemplo, el siguiente comando crea un contenedor que se basa en la imagen de contenedor de Windows Server Core. No especifique un modo de aislamiento en el comando, de modo que Docker usará el modo de aislamiento predeterminado, que es el aislamiento de procesos. El parámetro --name se usa para establecer un nombre en el contenedor. -se usa para tener una sesión interactiva con el contenedor (en lugar de -d para ejecutar desasociada) y la instrucción de PowerShell abre una sesión de PowerShell:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
- El comando de confirmación de docker confirma los cambios realizados en un contenedor en una nueva imagen de contenedor. La operación de confirmación no incluye los datos contenidos en los volúmenes montados en el contenedor. De forma predeterminada, el contenedor se pausará mientras se crea la nueva imagen de contenedor: (tenga en cuenta que esta opción no se recomienda como procedimiento recomendado para crear nuevas imágenes de contenedor)
docker commit
- El comando docker stop detiene un contenedor en ejecución:
docker stop <container name or ID>
- El comando docker rm quita uno o varios contenedores:
docker rm <container name or ID>
Demostración
En el vídeo siguiente se muestra cómo:
Instale Docker CE/Moby en Windows Server.
Extraiga una imagen de contenedor y ejecute un nuevo contenedor de forma interactiva.
Implemente una instancia de contenedor de IIS y valide la página web en el explorador.
A continuación se indican los pasos principales del proceso:
Instale Docker CE/Moby en Windows Server.
Descargue una imagen de Windows Server Core que contenga Internet Information Services (IIS). Dado que la versión de la imagen base del contenedor debe coincidir con la del host, use el contenedor iis:windowsservercore-ltsc2022.
Ejecute el siguiente comando de Docker con estos parámetros:
Ejecute el contenedor descargado como un servicio en segundo plano mediante el parámetro -d.
Configure las funciones de red para que el puerto 80 del host del contenedor se asigne al puerto 80 del contenedor.
Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
- Obtenga el identificador del contenedor con el comando siguiente:
docker ps
- Detenga el contenedor con el comando siguiente:
docker stop <container ID>
Revisión rápida