Sign up with your email address to be the first to know about new products, VIP offers, blog features & more.

Containers en Windows Server 2016

¿Containers en Windows Server 2016?

Buenas hoy he iniciado mi incursión en los containers de Windows Server 2016, desde hace tiempo que he escuchado en diferentes hilos el sistema de dockers o containers, así que he decido investigar y montar algún laboratorio para realizar pruebas y ver cómo funciona.  Para empezar me gustaría daros una visión general siempre bajo mi conocimiento

¿Qué son los containers?

Conatiners o Dockers es un proyecto de código abierto capaz de automatizar el despliegue de aplicaciones dentro de contenedores de software, proporcionándonos así una capa adicional de abstracción y automatización en el nivel de virtualización de sistema operativo.

Esta idea de containers no es nueva, en el mundo Linux ya existía desde hace mucho tiempo e incluso ha experimentado un alto crecimiento de uso en los últimos años.

En un principio parece muy similar a un sistema de virtualización pero si sigues leyendo entendaras las diferencias.

En Microsoft server 2016 hay dos tipos de containers:

  • Containers en Windows Server 2016: Se instala la característica directamente en el servidor y allí se montan diferentes instancias de containers compartiendo el mismo núcleo del sistema.
  • Hyper-V 2016 Containers: Varias instancias se ejecutan simultáneamente en un mismo host, sin embargo, estas no comparten el mismo núcleo, pero quedan aísladas entre ellas a través del uso la tecnología de virtualización Hyper-V

Paso 1 .- Instalación de la caracterísca de Containers en Windows Server 2016

Lo primero que tenemos que hacer es habilitar la característica de containers, esto lo podemos hacer a través del entorno GUI o  a través de powershell.

En el modo gráfico lo podemos realizar a través del Administrador del servidor pulsando en la línea “Agregar roles y características” y al llegar a características seleccionamos contenedores.

o a través de powershell co permisos de administrador el siguiente comando.

Install-WindowsFeature Containers -Restart

Paso 2 .- Instalación del motor y cliente docker  

Para ello deberemos abrir una consola de Powershell como administradores y ejecutar los siguientes comandos:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

 

Y luego la ultima versión de docker

Install-Package -Name docker -ProviderName DockerMsftProvider

Nota:

Llegado a este punto me encontré con que aparecía el siguiente error:

 

Estuve buscando el kb que mencionaba pero no lo encontré en el catalogo de Microsoft por lo que force el Windows update del sistema hasta instalar las ultimas actualizaciones y después de reiniciar volví a probar el comando y funciono sin problemas.

Una vez instalado forzamos el reinicio de sistema

Restart-Computer -Force

Ahora ya disponemos de la instalación del servicio de docker o containers en nuestro server 2016, para realizar la comprobación podemos lanzar el siguiente comando

docker version

Paso 3 .- Cargar imagenes en nuestros containers

Si lanzamos el comando, veremos que actualemnte no disponemos de ninguna imagen para poder ser desplegada como container.

docker image

La base de los containers son imágenes de sistema operativo medio preparadas para su despliegue como containers. Estas imágenes las podemos descargar de internet, para ver una lista podemos lanzar el siguiente comando:

dockers search microsoft

Ahora vamos a montar un contenedor de ejemplo mediante el comando

docker run microsoft/dotnet-samples

Después de un tiempo la descarga concluye y nos mostrara el resultado.

Ahora vamos a a realizar una prueba y montaremos un container con IIS y para ver su funcionamiento. para ello ejecutamos el siguiente comando:

docker run -d –name NewIIS -p 80:80 microsoft/iis

  • -d  Consola interactiva, me permite interactuar con el container, dependiendo del comando que le proporcione.
  • –name NewIIS Damos el nombre al container creado en base la imgane descargada.
  • -p 80:80 Habilitamos  un NAT del puerto 80 de la máquina host, con el puerto 80 del container. De esta forma se puede acceder al servicio Web externamente.

Ahora antes de realizar la prueba de visualización del IIS me gustaria comentaros que cuando se activa el servicio de docker en el Server 2016 este crea un swicth virtual con nat para conectar los containers a la red, esto nos proporciona un segmento de red de conexión entre el host y los diferentes containers que albergan.

Recordar que el NAT se hace sobre la IP que tiene el host y, por lo tanto, no se permite duplicar los puertos en la misma IP.

Para comprobar su funcionamiento realizamos la siguiente prueba, abrimos un cmd en nuestro host y ejecutamos ipconfig para ver la configuración

Aquí podremos ver la ip asignada en switch virtual y conectara con los containers y la ip local del equipo que nos permite conectarnos a la red fïsica.

Ahora abriremos una ventana de powershell y ejecuamos el sguiente comando

docker exec -i NewIIS cmd

  • -i Consola interactiva, me permite interactuar con el container, dependiendo del comando que le proporcione.

Y ahora volvemos a realizar un ipconfig para ver la ip asiganda al container.

Ahora vamos a mostrar el IIS desde el navegador recardor que existe el NAT y que para acceder a losservicios publicados de los containers deberos hacerlo a través de la ip del host y el puerto publicado.

Para Finalizar os dejo algunos comandos necesarios para la administración de los containers

docker ps -a -> listar los containers creados

docker rm Container_ID -> eliminamos el container determinado con el ID

docker start Container_ID -> iniciamos el container indicado con ID

docker stop Container_ID -> Apagar el conatiner indicado con ID

Bueno hasta aquí mi primera experciencía con containers en Server 2016.

Saludos.