Getty Images/iStockphoto

Cómo configurar contenedores Docker en Windows Server

Docker se originó en el sistema operativo Linux, pero los contenedores de Windows basados en esta tecnología pueden aportar numerosas ventajas a la empresa. Aquí le explicamos cómo empezar.

Docker se originó en Linux y, si bien la mayoría de las implementaciones de contenedores utilizan ese sistema operativo, hay ocasiones en que los requisitos exigen el uso de Docker en Windows.

Las empresas que deseen modernizar sus aplicaciones Windows heredadas y ejecutarlas en contenedores necesitarán usar Docker en Windows. Una vez que comprenda su funcionamiento, ejecutar Docker en Windows no será más complejo que hacerlo en Linux. La aplicación principal utiliza los mismos comandos y parámetros, pero existen matices en la administración. Este tutorial destacará las diferencias entre Docker en Windows y Linux, y mostrará cómo ejecutar y mantener un contenedor Docker en Windows Server.

¿Por qué utilizar contenedores Docker en Windows Server?

Docker se originó en Linux porque los desarrolladores del proyecto usaban esa plataforma. Les resultó beneficioso usar la funcionalidad nativa de Linux para segmentar y proteger los contenedores entre sí y del sistema operativo.

Sin embargo, a veces es necesario ejecutar contenedores en Windows. Esto suele ocurrir cuando la aplicación necesita usar tecnologías exclusivas de Windows, como ASP.NET o Windows Management Instrumentation. Muchas aplicaciones importantes escritas en ASP.NET aún se utilizan. La contenedorización ofrece una forma de gestionar estos programas ASP.NET en un entorno controlado. Todos los contenedores implementados serán idénticos. Una organización puede lograr la situación ideal implementando contenedores de buena calidad que no estén sujetos a cambios ni actualizaciones inesperados.

Usar Docker en Windows ofrece muchas ventajas. Los contenedores de Windows son paquetes ligeros con solo los servicios y el código de aplicación necesarios para reducir las implementaciones de horas a segundos. Las actualizaciones se integran a la imagen del contenedor. Si una imagen del contenedor es incorrecta, la recuperación de la imagen anterior se realiza rápidamente. La velocidad y la comodidad de los contenedores no son posibles con las máquinas virtuales. Se trata de proporcionar un servicio, no de la máquina virtual.

¿Cómo funcionan los contenedores Docker en Windows?

La estrecha integración de Docker con Linux implicaba que los recursos del sistema y las API que un contenedor de Windows esperaría no existían. Microsoft tuvo que idear una forma de ejecutar Docker en Windows Server para gestionar las tecnologías clave de varios productos de Microsoft, como Internet Information Services (IIS) y Active Server Pages (ASP).

Hay cuatro imágenes base de contenedor disponibles para ejecutar Docker en Windows: Nano Core, Server Core, Windows y Windows Server. El repositorio de Docker Hub contiene las imágenes oficiales de Docker de Microsoft para Windows en este enlace. Estas imágenes no tienen interfaz gráfica y tienen diferentes conjuntos de API de Windows. La más ligera es Nano Server, ideal para desarrolladores de aplicaciones. Server Core es la siguiente en tamaño y es ideal para aplicaciones de Windows Server. Windows es la más grande y ofrece compatibilidad total con las API de Windows. La imagen base de Windows Server también ofrece compatibilidad total con las API de Windows y es ideal para cargas de trabajo que requieren funciones de servidor. Este enlace proporciona más detalles sobre las características específicas de cada imagen y cuál podría ser la más adecuada para una situación específica. 

Se recomienda seguir ciertas pautas para obtener resultados óptimos. Si bien es posible ejecutar contenedores de Linux y Windows en el mismo host, no es recomendable. Desde la perspectiva de un administrador, es más fácil ejecutar contenedores para diferentes sistemas operativos en servidores separados que ejecuten su sistema operativo nativo.

Microsoft agregó la funcionalidad de Linux a Windows con el Subsistema de Windows para Linux, pero la compañía no lo recomienda para ejecutar contenedores de Linux en Windows Server en producción.

¿Cuáles son los requisitos para ejecutar Docker en Windows Server?

Los siguientes son los requisitos básicos para ejecutar contenedores Docker en Windows Server.

  • Sistema operativo Windows Server. Docker puede ejecutarse en Windows Server 2016, 2019, 2022 y 2025 con la función Hyper-V instalada para usar el aislamiento de Hyper-V.
  • Hardware. Un host contenedor de Windows que se ejecuta desde una máquina virtual Hyper-V con aislamiento de Hyper-V debe usar virtualización anidada, lo que requiere al menos 4 GB de RAM.
  • Tiempo de ejecución compatible con el contenedor Docker.

Cómo configurar Docker en Windows Server

Puede instalar Docker en Windows de varias maneras. El método más fácil es utilizar los scripts de Microsoft, que hacen todo el trabajo pesado para el administrador.

El script de Microsoft instala las herramientas de administración de contenedores de código abierto como un servicio de Windows en una máquina virtual Hyper-V estándar o un host físico. No instale Docker Desktop, una herramienta para que los desarrolladores implementen contenedores que no está diseñada para cargas de trabajo de producción.

Cómo configurar Docker en Windows Server 2022

Para instalar Docker en Windows Server 2022, inicie una sesión de PowerShell con privilegios elevados y ejecute el siguiente comando para descargar el script de instalación de Docker desde el repositorio de Microsoft en GitHub:

Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1

En la misma ventana de administración de PowerShell, ejecute el script utilizando el siguiente comando, que reiniciará el host para completar la instalación:

.\install-docker-ce.ps1

El script de instalación agrega Docker como servicio de Windows y configura la red Docker. De forma predeterminada, todos los contenedores Docker tienen una red independiente que se conecta a través del host.

Verifique el host del contenedor Docker ejecutando la imagen hello-world:

docker run hello-world

Cómo instalar y ejecutar un contenedor Docker en Windows

Al ejecutar Docker en Windows, el administrador puede ejecutar imágenes basadas en Windows y Linux.

Las opciones básicas de uso de la línea de comandos docker.exe son las mismas que las de Linux.

Para ver los contenedores en ejecución, utilice el comando docker ps.

Utilice el comando docker run <container name> para iniciar un contenedor.

Algunas de las diferencias entre Docker para Windows y Linux son notables e importantes. Windows no tiene bash, el Bourne Again Shell. El shell instalado en los contenedores de Windows es PowerShell. Podemos ejecutar la imagen de Server Core con un shell interactivo para demostrarlo.

docker run -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell

Los nuevos usuarios de Docker deben tener cuidado en este punto. Tras ejecutar el comando, podría parecer que están en el símbolo del sistema del host, pero en realidad están dentro del contenedor de Docker. Si el administrador usa el comando hostname desde la línea de comandos, se mostrará el ID del contenedor, no el nombre del host. Esto puede ser confuso para los administradores que no usan Docker.

Cada contenedor tiene un identificador único. El comportamiento predeterminado de Docker es asignarle al contenedor el nombre del identificador único, como 435523445. Al ejecutar el comando hostname, se mostrará 435523445. La línea de comandos es idéntica tanto en el contenedor como en el host. Asegúrese de saber dónde se encuentra antes de ejecutar cualquier comando crítico.

Al igual que en Linux, los administradores no deben hacer nada más que ejecutar y eliminar contenedores. Esta mentalidad difiere de la administración de VM, que requieren más cuidado y mantenimiento. Los contenedores están diseñados para ser desechables. Una instancia específica puede durar minutos, horas, días o incluso semanas. Finalmente, se crea un nuevo contenedor para reemplazar el anterior. Los administradores no deben modificar los contenedores, ya que se perderán las modificaciones realizadas en el contenedor anterior.

Llevando el asunto más allá, el administrador puede ejecutar un contenedor IIS base mediante un comando. Para usar este ejemplo, se requiere una carpeta llamada c:\wwwdata. El siguiente comando de Docker crea y ejecuta un contenedor llamado myIISTest desde la imagen IIS específica, exponiendo el puerto 80 del contenedor al puerto 8081 del host y montando la carpeta c:\wwwdata dentro del contenedor en c:\inetpub\wwwroot. Los parámetros -ti permiten interactuar con el contenedor mediante un shell.

docker run -ti -p 8081:80 -v c:\wwwdata:c:\inetpub\wwwroot --name myIISTest mcr.microsoft.com/windows/servercore/iis

Use el comando exit para detener y salir del contenedor. Para asegurar la persistencia del contenedor, añada un parámetro -d a la línea de comandos para ejecutarlo en segundo plano o en modo independiente. Para reutilizar nuestro ejemplo anterior:

docker run mcr.microsoft.com/windows/servercore/iis -d -p 8081:80 -v c:\wwwdata:c:\inetpub\wwwroot -name myIISTest

La creación de imágenes de Docker en Windows funciona de la misma manera que en Linux, pero Linux usa la barra diagonal hacia la derecha en las rutas, mientras que la versión de Windows de Docker admite tanto barras diagonales hacia la derecha, como hacia la izquierda.

Cómo administrar y solucionar problemas de Docker en Windows

La característica distintiva de los contenedores Docker es su naturaleza desechable, pero los administradores necesitan herramientas para ver su rendimiento y si es necesario reemplazarlos. El Centro de Administración de Windows es una herramienta gratuita de Microsoft disponible en el siguiente enlace. Ofrece una interfaz gráfica de usuario para la administración del servidor.

La herramienta Centro de administración de Windows proporciona una GUI para trabajar con contenedores Docker en Windows Server.

El Centro de Administración de Windows no funciona con contenedores de forma predeterminada, pero puede descargar una extensión para contenedores que lo permita. En el Centro de Administración de Windows, vaya a la pestaña Extensiones, busque contenedores e instálela. La extensión ofrece las opciones más utilizadas para la administración de contenedores.

El Centro de Administración de Windows facilita la ejecución de contenedores, pero es importante saber cómo funciona Docker para comprender cómo abordar los problemas.

Las herramientas de diagnóstico integradas de Docker también están disponibles en Docker para Windows. Entre las más sencillas se encuentra el comando docker ps -a el cual es el comando "estado del proceso", cuyo parámetro -a muestra todos los contenedores de Docker del sistema, tanto en ejecución como detenidos.

Si un contenedor muestra un estado exited y el administrador no lo detuvo, pruebe el comando docker logs -tf <container id>. Esto muestra los registros con marca de tiempo del contenedor para solucionar el problema. Al usar la redirección >, el contenido se guarda en un archivo para su posterior análisis.

docker logs -tf my_container_name > output.txt

También resulta útil consultar las estadísticas de uso de las herramientas integradas de Docker. El comando docker stats proporciona información casi en tiempo real sobre los contenedores en ejecución, incluyendo el uso de memoria, el uso de CPU y las estadísticas de disco por contenedor.

Dado que Docker se instala como servicio, los administradores pueden usar el complemento services.msc de las Herramientas de Administración Remota del Servidor (RSAT) para ver el estado del servicio Docker. Si no se está ejecutando, ningún contenedor Docker funcionará. Si el servicio Docker no se ejecuta, o se reinicia por algún motivo, el registro de errores del Visor de Eventos de Windows debería proporcionar algunas pistas sobre el problema.

Stuart Burns es un administrador de Linux en una empresa líder que se especializa en modelado de catástrofes y desastres.

Investigue más sobre Servidores