Containers con Windows Server 2016

5 abril 2016
Josep Ma Solanes 16

Entrada de gestión de Containers con Microsoft Windows Server 2016 versión final.

Esta entrada sobre containers está basada en la versión preliminar de Windows Server 2016 Technical Preview 4 y puede estar sujeta a cambios.

ACTUALIZACIÓN JUNIO 2016: Modificación de los comandos para operar con la versión preliminar de Windows Server 2016 Technical Preview 5, continua pudiendo estar sujeta a cambios.

 

¡Con este artículo me estreno en YouTube!. Os dejo el vídeo explicativo que habla de este artículo.
Si os gusta no os olvidéis en darle al like.


 

Introducción a los Containers

El concepto de container, aplicado a la informática, consiste en agrupar y aislar entre sí aplicaciones o grupos de aplicaciones que se ejecutan sobre un mismo núcleo de sistema operativo.

Para entenderlo mejor, podríamos llegar a hacer el símil con la virtualización de máquinas. En ella, se comparte un mismo hardware entre varios sistemas operativos. En el caso de los containers, vamos a un paso más en este mundo. Imaginad que tenéis que desplegar una aplicación web como puede ser el WordPress. A priori se requiere de un servidor Web y de un servidor de base de datos. Dependiendo del grado de carga y alta disponibilidad podría ser que necesitaran dos servidores web como frontales configurados de una forma concreta. La opción actual que aplicaríamos en este caso, sería desplegar tres máquinas virtuales: dos servidores web y un servidor de base de datos, configurándolos según las necesidades. Sí, ya sé que dependiendo de la carga se puede hacer todo en una, pero hagámoslo bien y separemos las máquinas. Eso quiere decir: servidor físico, plataforma de virtualización, tres máquinas virtuales con sus tres sistemas operativos y finalmente la parte de aplicación que corresponda a cada una de las máquinas virtuales.

Pasando este ejemplo a un entorno de containers podría quedar de la siguiente manera: el servidor físico, la plataforma de virtualización, una máquina virtual con su sistema operativo habilitado para alojar containers y los containers correspondientes: dos de servidor web y uno de base de datos.

Ventaja a prori, la cantidad de recursos necesarios para mantener encendida la aplicación:

  • En el primer caso, requería de tres máquinas virtuales con su sistema operativo, se mantiene triplicada la parte común del sistema operativo.
  • En el segundo caso, sólo requiere de una máquina virtual con su sistema operativo, sólo varía la parte de las aplicaciones.

containers-014es

Por lo tanto, menos superfície de ataquemenos configuraciones más movible. Sólo cambiando el container de equipo te llevas toda la aplicación y a funcionar, sin necesidad de reinstalaciones.

En definitiva, en el entorno de containers, en lugar de compartir sólo el hardware, teniendo que instalar el mismo sistema operativo en varias máquinas para diferentes aplicaciones, lo que se hace es instalar el mismo sistema operativo y encima de él las diferentes aplicaciones en forma de cajas, aisladas entre sí, como si fueran máquinas virtuales.

El container se puede hacer correr en entornos Linux y Windows Server 2016 o Windows 10.

Sí, lo entiendo, es un concepto nuevo y puede ser un poco espeso, pero la idea gusta y se tiene que ver como una herramienta más que se nos pone a nuestra disposición. ¿Qué puede ser un lío? No, simplemente aplicarla donde corresponda:

  • Para cosas de más rendimiento y más eficientes: Containers
  • Para cosas más seguras y aisladas: Máquinas Virtuales

containers-015es

Si queréis saber más de esta tecnología podéis consultar el proyecto de código abierto Docker que mantiene la empresa con el mismo nombre, Docker, y que es el motor que integra Microsoft para dar servicio de containers a los nuevos sistemas operativos.

En Windows, los containers, pueden ser de dos tipos diferentes según el grado de aislamiento entre ellos:

  • Windows Server Container. Las instancias de los containers se ejecutan a la vez sobre el mismo anfitrión, compartiendo el mismo núcleo común.
  • Hyper-V Container. Las instancias de los containers se ejecutan a la vez en el mismo anfitrión, pero no comparten el mismo núcleo sino que se aísla entre cada uno utilizando la tecnología de virtualización Hyper-V.

A nivel funcional, los Windows Server Containers y los Hyper-V Containers, se crean, gestionan y funcionan de forma idéntica.

Empezamos a tener contacto con esta tecnología, paso a paso, desde la plataforma de Microsoft y, lo primero consiste en desplegar la plataforma para dar servicio de containers.

 

Instalación de Windows Server Container

Para utilizar containers en Windows lo que necesitamos, a fecha de hoy, es un servidor Windows Server 2016 o superior; o bien una versión de Windows 10 build 1607 (Anniversary Update) o superior, instalado y actualizado a la fecha, como no.

Desde el Administrador del servidor, en el menú superior de la derecha, hacer clic en Administrar y, a continuación, Añadir roles y características.

containers-001

Se inicia el asistente para añadir los roles y características. Se puede marcar el checkbox para no volver a enseñar la pantalla de introducción. Hacer clic en el botón Siguiente.

containers-002

Marcar instalación basada en instalar rol o característica y hacer clic en el botón Siguiente.

containers-003

Seleccionar el servidor donde habilitar el rol o característica y hacer clic en el botón Siguiente.

containers-004

De la lista de roles, a no ser que tengamos que utilizar Containers Hyper-V, no es necesario marcar ninguna opción. Hacer clic en el botón Siguiente.

containers-005

Como característica, marcar el checkbox en Containers y hacer clic en el botón Siguiente.

containers-006

Resumen de la instalación. Si todo está correcto, se puede marcar el checkbox de reiniciar el equipo cuando sea necesario y hacer clic en el botón Instalar.

containers-007

Finalizada la instalación, si no se ha marcado el checkbox de reiniciar automáticamente, hacer clic en el botón Cerrarreiniciar el servidor.

containers-008

Con la máquina reiniciada no esperéis encontrar grandes cambios. Toca utilizar la PowerShell. Iniciarla desde el menú Inicio, escribiendo PowerShell, por ejemplo.

containers-009

El siguiente paso que debemos dar es instalar el motor y cliente Docker. Se ha hecho un esfuerzo para que sea transparente para todas las plataformas y se puedan utilizar los mismos comandos, de esta forma no tendré que aprender nuevos comandos cuando salto de Windows a Linux o viceversa.

Importante saber que al realizar la instalación estándard se crea una red de NAT donde se ejecutan los containers. Por consiguiente, no existirá un acceso directo al container desde el exterior del host. Tenedlo en cuenta al publicar los puertos hacia el container o cambiar esta red a otro tipo, todo dependerá de los servicios que ofrecemos. De momento, este artículo lo continuo con la red de NAT.

 

Instalación de Docker

Desde la PowerShell realizamos la descarga de los ficheros necesarios, así como el registro del servicio de Docker. La versión de descarga de docker aun está en release preview, pero ya es operativa. Personalmente no me gusta demasiado que se tenga que descargar a parte y te tengas que preocupar de la versión. De momento es lo que hay.

Invoke-WebRequest "https://download.docker.com/components/engine/windows-server/cs-1.12/docker.zip" -OutFile "$env:TEMP\docker.zip" -UseBasicParsing

Descomprimir el fichero a la carpeta c:\Program Files\Docker:

expand-archive -path "$env:TEMP\docker.zip" -DestinationPath $env:ProgramFiles

Añadir el directorio de Docker al path del sistema de forma persistente:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

Si sólo lo queremos añadir momentáneamente, eso quiere decir que cuando se reinicia el equipo se pierde:

$env:path += ";c:\program files\docker"

Añadir el servicio de Docker al sistema:

dockerd.exe --register-service

Iniciar el servicio de Docker:

start-service Docker

Ya se puede comprobar que Docker está operativo y funciona correctamente en nuestro sistema con el comando:

docker version

Ofrece una información parecida a esta:

PS C:\> docker version
Client:
 Version:      1.12.2-cs2-ws-beta-rc1
 API version:  1.25
 Go version:   go1.7.1
 Git commit:   62d9ff9
 Built:        Fri Sep 23 20:50:29 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.12.2-cs2-ws-beta-rc1
 API version:  1.25
 Go version:   go1.7.1
 Git commit:   62d9ff9
 Built:        Fri Sep 23 20:50:29 2016
 OS/Arch:      windows/amd64

 

Cargar las imágenes de sistema operativo para containers

Para crear containers desde 0 lo tenemos que hacer con imágenes del sistema operativo medio preparadas para su despliegue como containers. Estas imágenes las podemos generar nosotros desde 0 con la ISO de instalación del sistema operativo o bien descargarlas de Internet.

Optaremos por esta segunda opción, la descarga desde el Hub Docker. Donde podéis encontrar imágenes preparadas de todos los tipos. En el caso de Microsoft Windows Server tenemos:

  • Microsoft Windows Server 2016 edición core. Con el comando:
    docker pull microsoft/windowsservercore
  • Microsoft Windows Server 2016 edición nano. Con el comando:
    docker pull microsoft/nanoserver

Finalizada la descarga e instalación al repositorio de imágenes, comprobar que se han cargado correctamente:

docker images

Con esta versión es posible hacer correr containers con Windows Server Core y Windows NanoServer. Lo comento porqué en las versiones previas no estaba permitido.

 

 

Administrando imágenes de containers

Tenemos las imágenes, y si queremos borrar una de estas imágenes del repositorio, ¿cómo lo hacemos? Siempre tenemos que tener en cuenta que no se puede borrar una imagen que tenga containers asociados. Si esto se cumple, para borrar un container sólo es necesario ejecutar el comando:

docker rmi (seguida del nombre del container)

Poniendo un ejemplo. Para borrar la imagen del container microsoft/nanoserver ejecutamos:

docker rmi microsoft/nanoserver

¿Se puede importar/exportar una imagen de container al sistema de ficheros local? La verdad es que sí. ¿Cómo? mediante la importación y exportación de imágenes explicado en los siguientes puntos de este artículo:

 

Administrando containers

Comprobar que aun no tenemos ningún container creado:

docker ps -a

En caso de tener alguno, de otra instalación o para memorizar el comando que utilizaremos a menudo, podemos ver los containers que se estan ejecutando con el comando:

docker ps

¡Tengo containers! No los quiero, ¿como los borro? Tranquilos, el container tiene un identificador, el container ID. Tomad nota y ejecutad el comando para borrarlo:

docker rm container_ID

 

Crear un container para Internet Information Server (IIS)

No sería demasiado bonito dejar la entrada aquí, con la miel en los labios, donde casi no se ha visto nada de espectacular. Para hacer una cosa sencilla, desplegamos un servidor web basado en Internet Information Server sobre Windows Server 2016 core.

Para crear el nuevo container para el servidor Web, que se llamará ServidorWeb y utilizará la imagen del sistema operativo que hemos descargado antes, WindowsServerCore.

Para no complicar más la cosa, de momento, se utiliza la conexión de red estándar del sistema de containers. De esta forma habrá una conexión NAT entre la red de containers (172.20.0.0/16) y el equipo local. Si se quiere publicar hacia el exterior del equipo local se utilizará la publicación de puertos en el mismo.

¡Atención al comando!

En el repositorio de imágenes tengo una imagen de Windows Server Core (microsoft/windowsservercore). Lo que hago es crear un container con el qué pueda interactuar para configurar el entorno web y lo que necesite. Para ello, ejecuto el comando con los parámetros:

  • -it  Consola interactiva, me permite interactuar con el container, dependiendo del comando que le proporcione.
  • -p 80:80 Se hace 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 al hacer la petición a la dirección IP del host.
  • Finalizo con el comando powershell, que representa la aplicación que quiero ejecutar.
docker run -it -p 80:80 microsoft/windowsservercore powershell

Para crear la imagen está bien así, pero en entornos de producción, mejor añadir el parámetro -d para que el container se ejecute en segundo plano y no abra consolas innecesarias.

Una vez iniciado el container, me aparece su consola de powershell. Si ejecuto el comando hostname (ID del container) o ipconfig (red 172.20.x.x) observo que no estoy en la máquina host sino en otra. Estoy dentro del container.

Para configurar el rol de servidor Web con Internet Information Server sólo es necesario instalarlo:

Install-WindowsFeature web-server

Para comprobar que el servicio web acabado de instalar funciona correctamente, accediendo mediante un navegador.

  • Desde el host, realizar una petición a la dirección IP del container. Para eso debemos saber la dirección IP del container, mediante el ipconfig anterior o un Get-NetIPAddress -AddressFamily IPv4. Pensad que tiene que ser una dirección de red 172.20.x.x.

containers-012

Pero la idea es que se pueda llegar desde cualquier equipo de la red. Como que el switch virtual está basado en NAT, se tiene que configurar el salto del puerto, en este caso el puerto 80 TCP. Es lo que hemos hecho con el parámetro -p 80:80.

Recordar que el NAT se hace sobre la IP que tiene el host y, por lo tanto, no se pueden duplicar los puertos en la misma IP. No se pueden tener dos containers dando servicio al puerto 80 con NAT sobre la IP del host.

Antes de ejecutar el container con el NAT, comprobar que no haya uno ya creado que pueda entrar en conflicto. Volviendo a la PowerShell del host de containers (se puede abrir una nueva consola de PowerShell si no se quiere abandonar el container), comprobar la columna PUERTOS:

docker ps

También se debe de permitir el acceso mediante el cortafuegos del host, comprobar que exista una regla que permita este acceso al puerto TCP 80:

Get-NetFirewallRule | Where {$_.Direction -eq "Inbound" -and $_.Enabled -eq "True"} | Get-NetFirewallPortFilter | Where {$_.LocalPort -eq 80}

Si no existe, crear una de nueva:

New-NetFirewallRule -Name "ServidorWeb" -DisplayName "ServidorWeb" -Protocol tcp -LocalPort 80 -Action Allow -Enabled True

Ahora sí se tiene que poder acceder al servicio web proporcionado por el container desde un equipo de la red. En un navegador introducir la IP del anfitrión de containers (en el ejemplo 192.168.1.160) y… ya tenemos el servidor operativo en la red:

containers-011

Se puede jugar a crear nuevas páginas Web y ir accediendo.

echo "Hola mundo desde un container de Windows" > c:\inetpub\wwwroot\esp.html

containers-013esp

 

Apagar el Container

Hemos visto como crear y ejecutar un container de forma interactiva, dejando abierta la consola de PowerShell. Desde esa PowerShell basta con ejecutar el siguiente comando para cerrarla y parar el container:

exit

En caso de cerrar la ventana de PowerShell con el ratón, el container continuará ejecutándose. Se puede comprobar abriendo otra consola de PowerShell y ejecutar el comando:

docker ps

Se visualizan los containers en ejecución. Para parar uno en concreto, introducir el comando siguiente indicando el Container ID que se obtiene de la lista anterior:

docker stop CONTAINER_ID

 

Iniciar el Container

Esta es fácil sabiendo el Container ID:

docker ps -a

Iniciar indicando el Container ID:

docker start Container_ID

 

 

Reiniciar el anfitrión

Otra pregunta que puede salir es si cuando se reinicia el host se pierden los containers. La respuesta es no. Los containers continúan creados, pero APAGADOS. Hace falta encenderlos si se quiere dar servicio con los comandos anteriores.

docker start container_ID

 

Distribuir un Container

Tengo un container creado y operativo, con el rol de IIS y mi aplicación cloud instalada y operativa. ¿Cómo lo hago para crear más containers que ofrezcan el mismo servicio sin tener que configurarlos uno a uno? Vaya, que hago un escalado de la aplicación en front-ends.

Con el container apagado se crea una nueva imagen de él. A partir de la imagen se pueden crear más containers en el mismo host. Tomar nota del container a partir del cual realizamos la imagen:

docker ps -a

Para crear la imagen se indica el Container ID y el nombre de la imagen. Si el nombre de la imagen no contiene nada al final se asigna como última imagen (latest) en el repositorio:

docker commit Container_ID jmsolanes/servidorweb

Por lo contrario, si se especifica la versión, la imagen se guarda con el número de versión indicado. Utilizar según vuestros requisitos:

docker commit Container_ID jmsolanes/servidorweb:version1

Comprobar que la imagen se ha añadido al repositorio, además de las imágenes anteriores del sistema operativo tiene que aparecer la imagen que acabamos de crear:

docker images

 

Exportar una imagen de container para poder copiar en otros equipos

Con el siguiente comando indicando la ruta donde guardar el fichero con la imagen (c:\containersimagenes\servidor.tar). Procurad acabar con la extensión .TAR e indicar el nombre de la imagen de container (jmsolanes/servidorweb):

docker save -o c:\containersimagenes\servidor.tar jmsolanes/servidorweb

 

Importar una imagen de container desde local

¿Se puede cargar la imagen a partir del fichero anterior, sin tener que acceder a Internet? Naturalmente. Solo necesito el fichero .TAR anterior.

docker load -i c:\containersimagenes\servidor.tar

 

Nuevos containers a partir de imágenes

Crear un nuevo container a partir de la imagen para escalar los front-ends, por ejemplo, es muy fácil. Sólo es necesario indicar el nombre de la imagen y, si corresponde, la configuración de los puertos de NAT. En un entorno en producción estos containers irán detrás de un balanceador que se encargará de comunicarse con ellos, pero esto ya lo veremos en otro artículo:

docker run -it -d -p 80:80 jmsolanes/servidorweb powershell

O dos containers (fijaros que utilizo otro puerto (81) en el host que pasa al puerto 80 del container):

docker run -it -d -p 81:80 jmsolanes/servidorweb powershell

O tres containers (fijaros que utilizo otro puerto (82) en el host que pasa al puerto 80 del container):

docker run -it -d -p 82:80 jmsolanes/servidorweb powershell

No olvidar el cortafuegos del host, que permita el acceso a los puertos indicados en el NAT:

New-NetFirewallRule -Name "ServidorWeb1" –DisplayName "ServidorWeb-TCP81" -Protocol tcp -LocalPort 81 -Action Allow -Enabled True
New-NetFirewallRule -Name "ServidorWeb2" –DisplayName "ServidorWeb-TCP82" -Protocol tcp -LocalPort 82 -Action Allow -Enabled True

 

Borrar los containers

Para borrar un container, listamos los containers que tenemos:

docker ps -a

y lo borramos indicando el Container ID en el comando:

docker rm Container_ID

 

¿Te ha gustado el artículo? Lo puedes compartir en las redes sociales. También puedes dejar tu opinión, comentario o sugerencia. ¡Gracias!

Similar Posts by The Author:

 

16 comentaris per a
“Containers con Windows Server 2016”

  1. Hola Josep María,

    En primer lugar agradecerte el trabajo de tu blog, con artículos extensos y súper-bien explicados.

    He estado probando el tema de los contenedores con la TP5 pero no consigo hacerlo funcionar.

    El problema que tengo es que con la TP5 es no me reconoce el cmd-let Install-ContainerOSImage.

    Es decir, tanto si hago: Save-ContainerImage, luego no tengo el Install-ContainerOSImage.

    y si trato de instalar online con: Install-ContainerImage, me dice que no encuentra el Install-ContainerOSImage.

    Lo curioso del tema es que con la TP4 conseguí hacerlo funcionar todo.

    y aprovecho para hacerte otra pregunta, que diferencia hay entre realizar las acciones desde cmd-lets de PowerShell o directamente con comandos de docker?

    PD: Tampoco lo he conseguido hacer funcionar con comandos docker.

    Muchas gracias y ¡un saludo!

    Alfredo.

     
    1. Hola Alfredo,

      Tienes razón, de la TP4 a la TP5 varían muchos comandos y esos que indicas son un ejemplo. En breve refrescaré el artículo con los comandos de Windows Server 2016 (final).

      Como aun no es definitivo, Microsoft va cambiando según el feedback de los usuarios. El tema Docker es para mantener el entorno transversal, que sea lo mismo crear un script para Linux que para Windows.

      Saludos,

       
  2. Hola Josep María,

    Felicidades por tu blog, desde luego contiene artículos súper-interesantes.

    Estoy probando este artículo de contenedores con la versión RTM lanzada hoy y pasa lo mismo que comenta Alfredo.

    Buscando por Internet no encuentro ninguna guía que funcione.

    Ya tengo ganas de probar tu artículo de contenedores actualizado a la versión RTM.

    Muchas gracias,

    Miguel.

     
    1. Gracias por tu comentario Miguel. En eso estoy, dando forma a todas las funcionalidades de la versión final de Windows Server 2016. Que por cierto, para el resto de seguidores del blog, podéis descargar para su evaluación en el siguiente enlace: https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016?i=1?i=1.

      Al igual que la versión final de System Center 2016: https://www.microsoft.com/en-us/evalcenter/evaluate-system-center-2016?i=1

      Saludos.

       
  3. Parece que han sacado ya una imagen compatible con la versión final de Windows Server 2016:

    https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/

    De todas formas no me queda muy claro como funciona todo en conjunto.

    Esperaremos al post sobre contenedores de JMSolanes actualizado a la versión final de Windows Server 2016 para entender como funciona y poderlo probar.

    ¡Con muchas ganas de leerlo!

    Alberto.

     
    1. Si, es correcto Alberto, ya hay la versión final. Lo que no he tenido tiempo de ir poniendo todas las novedades en orden para los artículos (storage spaces direct, containers, hyper-v, file server, active directory…). Naturalmente tendrás este artículo que comentas y muchos más con todas las novedades.

      Saludos,

       
  4. ¿Puede ser que no funcionen bien los containers con la versión final de Windows 2016?

    No consigo hacerlos funcionar, no hay manera.

    ¡Esperando tu guía actualizada como agua de mayo!

    Gracias por tu fantástico blog.

     
    1. Es cierto, como ya indicaba en el artículo, este se hizo con una versión preliminar de Windows Server 2016 que ahora estoy actualizando. En breve tendréis la versión final.

      Saludos,

       
  5. Hola Josep María,

    Muchas gracias por actualizar el post a la versión final de Windows Server 2016.

    He estado probando paso a paso todo y hay una cosa que no entiendo.

    Con esto inicio el container:

    docker run -it -p 80:80 microsoft/windowsservercore powershell

    y se me abre una ventana de PowerShell dentro del container, allí puedo instalar IIS, etc…

    Con docker ps -a, puedo ver el container.

    Con docker start Container_ID, puedo iniciar el container.

    Con docker stop CONTAINER_ID, puedo detener el container.

    Bien, reinicio el equipo.

    Con docker start Container_ID, puedo iniciar el container.

    ¿Como abro de nuevo la ventana de powershell hacia el contenedor?

    Perdona mi ignorancia sobre el tema, pero con la documentación oficial de Microsoft no me aclaro, con la única que logro entender algo es con la tuya.

    Muchas gracias,

    JC

     
    1. Hola,

      Es correcto lo que comenta, mas para acceder a la consola PowerShell del container que tienes en ejecución basta con ejecutar: docker exec -it Container_ID powershell. De esta forma puedes interactuar con él.

      Saludos y gracias a ti por seguirme.

       
  6. Hola gracias por su Video estuve bastante confundido con esto de Contenedores que Muchas Cosas si y no funcionan.
    Primero
    Cuando instalo el contenedor y le doy Get-Command -Module Containers me aparecen sólo tres Cmdlets y deberían de ser muchos más. Sabe a que se debe?
    Segundo
    Estoy probando los contenedores y me gustaría obeservarlos en Hyper-V Como máquinas virtuales, cual es el paso para tenerlos en el formáto vhdx
    Tercero
    Estuve buscando en Micrososft para transportarlos de Físico a virtual pero no he encontrado aún nada podría ayudarme.
    Me gusta el tema pero aún tengo que familiarizarme. Muchas Gracias por adelantado por su respuesta

     
    1. Intento responder.

      Primero. Es cierto que las cosas en variado mucho desde las Technical Preview (desarrollo de producto) a la versión definitiva. Si bien en las TP había los cmdlets, estos se han substituido por el propio cliente de Docker para unificar los comandos en todas las plataformas (Windows / Linux). Por eso ya no visualizas el listado de cmdlets. No obstante se puede descargar una librería pública (https://github.com/Microsoft/Docker-PowerShell/) donde hay unos cuantos.

      Segundo. No entiendo, los containers NO son máquinas virtuales. Es otro tipo de tecnologías donde se comparte el sistema operativo. No vienen a substituir la máquina virtual en si. Ahora bien, puedes tener un servidor de containers físico (parecido a un host de máquinas virtuales pero que solo tenga containers) o virtual (lo mismo pero dentro de una máquina virtual). Lo único que se requiere para que esto último sea operativo es que la máquina virtual tiene que permitir la virtualización, lo que se llama Nested Virtualization. En el caso de Hyper-V, solo está soportado en Windows Server 2016 o Windows 10.

      Tercero. La gracia del container es que es el mismo paquete para todo, no existe físico o virtual, existe el container. Tengo pendiente hacer un artículo en los próximos días sobre transportar un container Windows en un host Linux o a Azure. A ver si esto funciona ya que es la filosofía por lo que se han creado.

      Saludos,

       
  7. Hola!!! Muchas gracias por el articulo!!
    Solo una consulta, estoy intentando armar toda mí nfraestructura con docker sobre windows server? sn embargo tengo dos dudas:
    1. Es conveniente hacer eso?? Es decir tener mis servidores de BD (postresql, mssql server, mysql) y otros servicios como jenkins, sonarqube e incluso IIS en contenedores
    2. En caso de que sea aconsejable… ¿como hago que mis containers se inicien automaticamente cada vez que inicio el SO Host?

    Gracias

     
    1. Sinceramente yo lo veo más útil como publicación de aplicaciones, sobretodo de microservicios o distribuidas. Haciendo el equivalente al instalador de Windows, por ejemplo, pero todo ya empaquetado y programado. Todos sabemos lo complejas que empiezan a ser las aplicaciones de hoy en día y las dependencias internas y externas que tienen. Que si parámetros de configuración específicos, que si ese framework con esa versión, que si el otro con la otra versión, etc… En producción puede ser un caos tener que mantener todo esto. En cambio, generando el container y diciendo arranca esto y todo funcionará, facilita mucho la vida.

      Sobre tu otra pregunta, puedes crear un acceso directo en el inicio de Windows a un script de PowerShell que te los levante todos a la vez. Tengo pendiente hacer una actualización de todo el tema de containers ya que han habido modificaciones en la nueva versió de Windows Server 2016 build 1709.

      Saludos,

       
  8. Hola, buenas tardes, muy buen video! pero me surge un problema. Partiendo de la siguiente infraestructura,
    Windows Server 2016

    IP: 10.3.41.50
    Mascara: 255.255.0.0
    Puerta de enlace: 10.3.12.254
    DNS: 127.0.01

    Cliente
    IP: 10.3.41.55
    Mascara: 255.255.0.0
    Puerta de enlace: 10.3.12.254
    DNS: 10.3.41.50

    Ambos en un dominio creado llamado PRUEBA.RAL

    Instalo el container sobre windows server core con su rol de IIS y en el servidor, me deja acceder desde la ip del container, pero el cliente, no accede a el, ni mediante ping ni mediante nslookup ni nada, no hay alguna manera de que el cliente pueda acceder al container¿?

     

Deixar un comentari

Recorda que no es contestaran preguntes personals, només d´interés comú que ens enriqueixin a tots.
La teva adreça de correu electrònic no serà publicada. Els camps obligatoris estan indicats.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.