/ HOWTO

Ejecutar contenedores de Windows y Linux en Windows Server 2019.


En el mes de octubre de 2018 se lanzo la nueva versión de Windows Server llamada “Windows Server 2019” y trae como novedades en cuanto a contenedores la posibilidad de ejecutar contenedores Windows y Linux sin la utilización de la máquina virtual “MobyLinux”.

A continuación, vamos a describir como instalar y trabajar con docker en esta nueva versión de Windows Server.

Lo primero que tenemos que hacer es eliminar cualquier versión de docker que este instalada en la máquina. Para realizar esta acción se tiene que ejecutar la siguiente sentencia de powershell (con permisos de administrador) y reiniciar la máquina.

Unistall-Package -Name docker -ProviderName DockerMSFTProvider

Cuando tengamos la maquina limpia o recién creada (docker no se instala por defecto), se procederá a la instalación de la versión (preliminar en estos momentos) para poder ejecutar contenedores de Linux. Para instalar esta versión se tiene que seguir los siguientes pasos:

Verificar que esta instalado el rol de Hyper-V. Es necesario tenerlo instalado para esta versión de Docker Enterprise que se va a instalar.

A continuación, se instala la versión beta de Docker Enterprise Edition. Para instalar esta versión se tiene que ejecutar los siguientes comandos de powershell:

Install-Module DockerProvider

Y después

Install-Package Docker -ProviderName DockerProvider -RequiredVersion preview

Por último, reiniciamos la máquina.


Configurar Docker Enterprise Edition para ejecutar contenedores Linux

Para configurar la ejecución de contenedores Linux se tiene que ejecutar la siguiente sentencia:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", "1", "Machine")

Y a continuación, se tiene que reiniciar el servicio de docker utilizando la siguiente sentencia:

Restart-Service docker

*** Ejecutar contenedores Linux

Para probarlo, primero bajamos una imagen de Debian

2019a

A continuación, creamos un contenedor de la imagen descargada

2019b

Configurar Docker Enterprise Edition para ejecutar contenedores Windows

Para configurar la ejecución de contenedores Linux se tiene que ejecutar la siguiente sentencia:

[Environment]::SetEnvironmentVariable("LCOW_SUPPORTED", $null, "Machine")

Y a continuación, se tiene que reiniciar el servicio de docker con la sentencia:

Restart-Service docker

Ejecutar contenedores Windows

Primero descargamos una imagen de Windows (nanoserver)

2019c

A continuación, se crea un contenedor de la imagen descargada

2019d

Y para verificar que se está ejecutando el contenedor accedemos al sistema de archivos donde se puede verificar que solo hay dos directorios: Users y Windows.

2019e


¿Cómo funciona?

Podemos pensar que funcionará igual que funciona en Docker for Windows para Windows 10, el cuál para ejecutar contenedores Linux utiliza la máquina virtual “MobyLinux” que se instala por defecto con Docker for Windows. Pero es incorrecto este pensamiento. Se puede verificar que la máquina virtual MobyLinux no existe en el administrador de Hyper-V.

2019f

La posibilidad de poder ejecutar contenedores Linux en Windows Server 2019 es debido a LCOW y LinuxKit.

LinuxKit es una herramienta que nos permite construir versiones de distros de Linux muy ligeras (https://github.com/linuxkit/linuxkit)

Y por otro lado tenemos LCOW, que a diferencia de ejecutar los contenedores Linux en la maquina virtual MobyLinux es que los que se ejecutan en LCOW se ejecutan en una máquina virtual de Linux optimizada con el sistema operativo suficiente para ejecutar los contenedores, es decir, tiene su propio Kernel y su sandbox que son gestionados por Docker en Windows directamente y no desde la máquina virtual MobyLinux.

En otro post explicaré con mayor detalle el funcionamiento de LCOW, pero para los que tienen curiosidad pueden mirar los siguientes enlaces:

https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers https://github.com/linuxkit/lcow

Subscríbete y recibirás los últimos artículos semanalmente en tu email.