/ HOWTO

Instalando Docker en Windows 10.


En este post explicaremos la instalación de Docker sobre Windows 10.

Lo primero es descargar el instalador de la página oficial, aprox. 540 mb.

https://docs.docker.com/docker-for-windows/install/

El nombre completo es

“Docker for Windows Installer” 540 mb

Durante la instalación deberemos confirmar si vamos a correr contenedores sobre Linux o sobre Windows, esto quiere decir que, como Docker corre sobre un Kernel, en el caso de que digamos Windows, Docker usará el Kernel propio del Windows 10 que tenemos. Esos contenedores serán MiniWindows dockerizados.

Hemos desactivo la opción de enviar información a Microsoft. (estadísticas de uso).

Pero si queremos correr contenedores Linux, en Windows 10, usará Hyper-V, donde creará una máquina Linux (MobyLinux) y en donde correrán los contenedores Linux.

Por ahora y hasta que no veamos funcionando el nuevo Windows 2019 R2 (o nombre similar), para correr contenedores Windows lo puede hacer sobre el kernel Windows, y para correr contenedores Linux usa una máquina virtual (Hyper-V).

Hemos probado una opción para correr contenedores Linux en Windows, sin necesidad de la máquina virtual, con este parámetro.

LCOW (Linux Containers on Windows) es un compnente para poder correr contenedores Linux sobre Windows.

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

Ver https://dockertips.com/contenedores-win19 para mas detalles.

Veremos que además de Docker tenemos otros productos instalados. Compose, Notary y Kubernetes, en otros posts hablaremos de ellos.

Luego de haber instalado Docker para Windows, podremos cambiar los contenedores que nos interese correr, por ahora solo de un tipo excluyente, o Windows xor Linux.

Para los que siempre usamos contenedores Linux, y al conectarnos a ellos usábamos un shell (/bin/bash), en los contenedores con Windows podremos usar CMD o PowerShell como shell.

Como cambiar el S.O. de todos los contenedores que usaremos.

Luego de tener instalado Docker en windows, y usando “cmd”, podemos interactuar con el cliente.

C:\Users\gamer>docker version
Client: Docker Engine - Community
Version: 18.09.1
API version: 1.39
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:34:26 2019
OS/Arch: windows/amd64
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.24)
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:50:10 2019
OS/Arch: windows/amd64
Experimental: false

Pedimos las imágenes descargadas, ahora mismo no tenemos ninguna.

C:\Users\gamer>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE

Luego descargamos dos imágenes que usaremos para nuestra prueba, un servidor MINI de Windows y un Servidor Windows con IIS.

C:\Users\gamer>docker pull microsoft/nanoserver
C:\Users\gamer>docker pull microsoft/iis

Al finalizar ( y son mas de 6 gb en total), podemos ver las imágenes descargadas.

C:\Users\gamer>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microsoft/iis latest 9235cfdefbee 3 weeks ago 4.33GB
microsoft/nanoserver latest 4c872414bf9d 3 months ago 1.17GB

Ahora ponermos a funcionar un contenedor usando la imágen “nano” de Windows.

C:\Users\gamer>docker run -it microsoft/nanoserver cmd
latest: Pulling from microsoft/nanoserver
Digest: 
sha256:2b783310e6c82de737e893abd53ae238ca56b5a96e2861558fb9a111d6691ddb
Status: Downloaded newer image for  microsoft/nanoserver:latest

Nos dejará en un Shell “cmd” dentro del contenedor.

C:\Users\gamer>docker exec -it 5f5c cmd
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\>exit

Usamos “exit” para salir del contenedor.

Ahora creamos y ponemos a funcionar un contenedor con IIS sobe Windows, en este caso diremos que el puerto de acceso es el 8080.

C:\Users\gamer>docker run -d -p8080:80 microsoft/iis 

Ahora podemos ver ambos contenedores corriendo.

C:\Users\gamer>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de59842060f6 microsoft/iis "C:\\ServiceMonitor.e…" 11 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp zealous_mayer
5f5c18b9f9c6 4c87 "cmd" 22 minutes ago Up 6 minutes gifted_booth

Para correr nuevamente un “cmd” en el contenedor de Windows, nos volvemos a conectar.

C:\Users\gamer>docker exec -it 5f5c cmd
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.

C:\>exit

Desde un navegador, podemos acceder al IIS corriendo en uno de los contenedores en el puerto 8080.

Al correr “docker stats” veremos el consumo de recursos, aún siendo Windows el consumo de RAM inicial es de unos 250 mb, bastante poco.

CONTAINER ID NAME CPU % PRIV WORKING SET NET I/O BLOCK I/O
de59842060f6 zealous_mayer 0.00% 497.7MiB 176kB / 417kB 61.7MB / 103MB
5f5c18b9f9c6 gifted_booth 0.00% 253.7MiB 35.6kB / 37.9kB 195MB / 27.6MB

Ahora verificamos que tenemos dos imágenes en nuestro equipo local, no necesitaremos descarlas de nuevo.

C:\Users\gamer>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
microsoft/iis latest 9235cfdefbee 3 weeks ago 4.33GB
microsoft/nanoserver latest 4c872414bf9d 3 months ago 1.17GB

Mientras docker este funcionando, veremos un programa llamado “Docker Desktop”, desde el que podemos configurar Docker, y otras funciones.

En el Windows 10, tendremos dos servicios corriendo “Docker” y “Desktop”. Ámbos estarán en modo automático, pero podemos pasarlos a “manual”, para evitar que arranquen siempre.

Si pedirmos un “docker version” y recibimos este error.

error during connect: Get http://.pipe.docker_engine/v1.39/version: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

Nos indica que el servicio “docker” no está funcionando, nos provee información del cliente, pero no logra conectarse con el servidor.

Con este comando podemos pedir todos los contenedores creados. Estén o no corriendo.

C:\Users\gamer>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de59842060f6 microsoft/iis "C:\\ServiceMonitor.e…" 14 minutes ago Up 14 minutes 0.0.0.0:8080->80/tcp zealous_mayer
5f5c18b9f9c6 4c87 "cmd" 26 minutes ago Up 10 minutes gifted_booth

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