Contenedores de servidores de Windows. ¿Cómo empaquetar una aplicación en un contenedor Docker? Contenedores de SQL Server

Los contenedores de Microsoft Windows Server 2016 son una extensión de las capacidades de la tecnología para los clientes. Microsoft planea el desarrollo, la implementación y ahora el alojamiento de aplicaciones en contenedores para los clientes como parte de sus procesos de desarrollo.

A medida que el ritmo de implementación de aplicaciones continúa acelerándose y los clientes utilizan implementaciones de versiones de aplicaciones diariamente o incluso cada hora, la capacidad de implementar rápidamente aplicaciones validadas desde el teclado del desarrollador hasta la producción es fundamental para el éxito empresarial. Este proceso se acelera con los contenedores.

Si bien las máquinas virtuales tienen la función de migrar aplicaciones en los centros de datos y a la nube y más allá, los contenedores desbloquean aún más los recursos de virtualización mediante la virtualización del sistema operativo (software del sistema). Esta decisión, gracias a la virtualización, permitirá una entrega rápida de aplicaciones.

El contenedor de tecnología de Windows incluye dos varios tipos contenedores, contenedores de Windows Server y contenedores Hyper-V. Ambos tipos de contenedores se crean, administran y funcionan de manera idéntica. Incluso producen y consumen la misma imagen de contenedor. Se diferencian entre sí en el nivel de aislamiento creado entre el contenedor, el sistema operativo host y todos los demás contenedores que se ejecutan en el host.

Contenedores de servidores de Windows: Se pueden ejecutar varias instancias de contenedor simultáneamente en un host con aislamiento proporcionado a través de tecnologías de espacio de nombres, administración de recursos y aislamiento de procesos. Los contenedores de Windows Server tienen el mismo núcleo ubicado en el host.

Contenedores Hyper-V: Se pueden ejecutar varias instancias de contenedor simultáneamente en un host. Sin embargo, cada contenedor se implementa dentro de una máquina virtual dedicada. Esto proporciona aislamiento a nivel de kernel entre cada contenedor Hyper-V y el contenedor host.

Microsoft ha incluido en la función de contenedor un conjunto de herramientas Docker para administrar no solo contenedores de Linux, sino también contenedores de Windows Server y Hyper-V. Como parte de la colaboración en las comunidades de Linux y Windows, la experiencia Docker se amplió mediante la creación del módulo PowerShell para Docker, que ahora es de código abierto. El módulo PowerShell puede administrar contenedores de servidor de Linux y Windows de forma local o remota utilizando la tecnología Docker REST API. Los desarrolladores están satisfechos con innovar para los clientes utilizando código fuente abierto para desarrollar nuestra plataforma. En el futuro planeamos llevar tecnologías a nuestros clientes junto con innovaciones como Hyper-V.

Comprar servidor Windows 2016

Le ofrecemos comprar Windows Server 2016 con descuento desde socio oficial Microsoft en Rusia – Empresa DATASYSTEMS. Tendrá la oportunidad de recibir asesoramiento, así como descargar Windows Server 2016 de forma gratuita para realizar pruebas contactando a nuestros especialistas de soporte técnico. Precio de Windows Server 2016 a consultar. Oferta comercial Para participar en la compra de Windows Server 2016, puede recibir previa solicitud por correo electrónico:

Estudiando la tecnología de contenedores
Servidor Windows 2016

Una de las nuevas características notables introducidas en Windows Server 2016 es la compatibilidad con contenedores. Conozcámosla mejor

Los sistemas modernos se han alejado desde hace mucho tiempo del principio de un sistema operativo: un servidor. Las tecnologías de virtualización permiten utilizar los recursos del servidor de manera más eficiente, permitiéndole ejecutar varios sistemas operativos, dividiéndolos entre sí y simplificando la administración. Luego aparecieron los microservicios, que permitieron implementar aplicaciones aisladas como un componente separado, escalable y de fácil administración. Docker cambió todo. El proceso de entrega de una aplicación junto con el entorno se ha vuelto tan simple que no podía dejar de interesar al usuario final. La aplicación dentro del contenedor funciona como si estuviera usando un sistema operativo completo. Pero a diferencia de las máquinas virtuales, no cargan sus propias copias del sistema operativo, bibliotecas, archivos del sistema, etc. Los contenedores reciben un espacio de nombres aislado en el que la aplicación tiene acceso a todos los recursos necesarios, pero no puede ir más allá de ellos. Si necesita cambiar la configuración, solo se guardan las diferencias con el sistema operativo principal. Por lo tanto, el contenedor, a diferencia de las máquinas virtuales, se inicia muy rápidamente y supone menos carga para el sistema. Los contenedores utilizan los recursos del servidor de manera más eficiente.

Contenedores en Windows

En Windows Server 2016, además de las tecnologías de virtualización existentes (aplicaciones virtuales Hyper-V y Server App-V), se agregó soporte para contenedores de Windows Server Containers, implementado a través de la capa de abstracción de la pila Container Management, que implementa todas las funciones necesarias. La tecnología se anunció en la Vista previa técnica 4, pero desde entonces muchas cosas han cambiado en dirección a la simplificación y ni siquiera es necesario leer las instrucciones escritas antes. Al mismo tiempo, se propusieron dos tipos de contenedores "sus": contenedores de Windows y contenedores de Hyper-V. Y probablemente otra oportunidad importante sea utilizar herramientas Docker además de los cmdlets de PowerShell para administrar contenedores.

Los contenedores de Windows son en principio similares a FreeBSD Jail o Linux OpenVZ: utilizan un núcleo con el sistema operativo que, junto con otros recursos (RAM, red), se comparten entre ellos. Los archivos de servicio y sistema operativo se proyectan en el espacio de nombres de cada contenedor. Este tipo de contenedor utiliza los recursos de manera eficiente, lo que reduce los gastos generales y, por lo tanto, permite que las aplicaciones se coloquen de manera más densa. Dado que las imágenes del contenedor base "tienen" el mismo núcleo que el nodo, sus versiones deben coincidir; de lo contrario, no se garantiza el funcionamiento.

Los contenedores Hyper-V utilizan un nivel adicional de aislamiento y a cada contenedor se le asigna su propio núcleo y memoria. El aislamiento, a diferencia del tipo anterior, no lo lleva a cabo el kernel del sistema operativo, sino el hipervisor Hyper-V (se requiere la función Hyper-V). El resultado es una sobrecarga menor que la de las máquinas virtuales, pero un mayor aislamiento que los contenedores de Windows. En este caso, para ejecutar el contenedor, tenga el mismo kernel del sistema operativo. Estos contenedores también se pueden implementar en Windows 10 Pro/Enterprise. Vale la pena señalar especialmente que el tipo de contenedor no se selecciona durante la creación, sino durante la implementación. Es decir, cualquier contenedor se puede ejecutar tanto en versión Windows como en versión Hyper-V.

El contenedor utiliza Server Core o Nano Server recortado como sistema operativo. El primero apareció en Windows Sever 2008 y proporciona una mayor compatibilidad con las aplicaciones existentes. El segundo es aún más sencillo en comparación con Server Core y está diseñado para ejecutarse sin monitor, lo que le permite ejecutar el servidor en la configuración mínima posible para su uso con Hyper-V, servidor de archivos (SOFS) y servicios en la nube, lo que requiere un 93 %. menos espacio. Contiene solo los componentes más necesarios (.Net con CoreCLR, Hyper-V, Clustering, etc.).

El formato de imagen se utiliza para el almacenamiento. disco duro VHDX. Los contenedores, como en el caso de Docker, se guardan en imágenes en el repositorio. Además, cada uno no guarda el conjunto completo de datos, sino sólo las diferencias. imagen creada desde lo básico. Y en el momento del inicio, todos los datos necesarios se proyectan en la memoria. Virtual Switch se utiliza para gestionar el tráfico de red entre el contenedor y la red física.

¿Cómo empaquetar una aplicación en un contenedor Docker?

Tengo una aplicación escrita en NodeJS. ¿Cómo puedo empaquetarlo en una imagen de Docker para ejecutarlo como contenedor?

Docker es un sistema de gestión de contenedores para sistemas operativos compatibles con POSIX (actualmente compatible con Linux). Una característica especial de Docker es la capacidad de empaquetar una aplicación con todo el entorno necesario de tal manera que pueda ejecutarse en otro sistema sin procedimientos largos y complejos para instalar dependencias o compilar a partir de fuentes. Una aplicación empaquetada lista para su implementación se denomina "imagen". Las imágenes de Docker se basan en "plantillas": entornos de trabajo preconfigurados. Puedes considerarlas como distribuciones de sistemas operativos, aunque esto no es del todo cierto. También puedes crear tu propia plantilla revisando la documentación de Docker. La ventaja de este enfoque es que la imagen de su aplicación contendrá solo la aplicación en sí y el entorno necesario para ella se descargará automáticamente desde el repositorio de plantillas. Docker recuerda ligeramente a chroot o bsd jail, pero funciona de manera diferente.

Es importante distinguir entre los conceptos de “contenedor” e “imagen”. El contenedor es una copia en ejecución de su aplicación y la imagen es el archivo en el que se almacena la aplicación y a partir del cual se crea el contenedor.

Supongamos que tiene una aplicación NodeJS que desea contener. Supongamos que el archivo que ejecuta su aplicación se llama server.js y que la aplicación escucha en el puerto 8000 para funcionar. Usaremos "node:carbon" como plantilla. Para contener su aplicación, necesita crear un archivo "Dockerfile" en el directorio donde se encuentran los archivos de su aplicación, que describirá los parámetros de preparación de la imagen:

$ toque Dockerfile

El contenido del archivo podría ser algo como esto:

# Especificar la plantilla a usar FROM node:carbon # Crear el directorio de trabajo de la aplicación dentro del contenedor WORKDIR /usr/src/app # Instalar las dependencias de la aplicación usando npm # Se copian los archivos package.json y package-lock.json, si están presentes COPY paquete*.json./ EJECUTAR npm install # Copie los archivos de su aplicación a la imagen COPIAR. . # Abra el puerto 8000 para que sea accesible desde fuera del contenedor EXPOSE 8000 # Ejecute el comando para ejecutar la aplicación dentro del contenedor CMD [ "npm", "start" ]

Para excluir archivos innecesarios de la imagen, puede enumerar sus nombres en un archivo ".dockerignore". Puedes usar una máscara (*.log).

La imagen se construye con el siguiente comando:

$ docker build -t nombre de usuario/aplicación-web-nodo.

$ imágenes acoplables # Ejemplo ID DE ETIQUETA DE REPOSITORIO CREADO nodo carbon 1934b0b038d1 Hace 5 días nombre de usuario/nodo-web-app último d64d3505b0d2 Hace 1 minuto

El contenedor se inicia desde la imagen usando el siguiente comando:

$ docker run -p 49160:8000 -d nombre de usuario/aplicación-web-nodo

Este ejemplo crea un contenedor a partir de la imagen "nombre de usuario/nodo-aplicación web" y lo ejecuta inmediatamente. El puerto de aplicación 8000 está disponible en la máquina local (localhost) y para que sea accesible “desde afuera”, se “reenvía” al puerto 49160. Puede seleccionar cualquier puerto libre, además, es posible reenviar la aplicación. puerto “tal cual” especificando la opción "-p 8000:8000".

Puede ver que su contenedor se está ejecutando ingresando el comando:

$ docker ps # Ejemplo ID IMAGEN COMANDO... PUERTOS ecce33b30ebf nombre de usuario/node-web-app:latest npm start... 49160->8000

Un contenedor se puede gestionar mediante varios comandos especificando el ID de este contenedor:

$ docker pausa ecce33b30ebf - pausa el contenedor con ID ecce33b30ebf
$ docker resume ecce33b30ebf - reanuda el contenedor con ID ecce33b30ebf
$ docker stop ecce33b30ebf - detener contenedor con ID ecce33b30ebf
$ docker rm ecce33b30ebf: elimina el contenedor (esto elimina todos los datos creados por la aplicación dentro del contenedor)

¡Está terminado! O las oraciones ayudaron o los sacrificios, pero ahora puedes ejecutar contenedores Docker con Windows dentro. Con el lanzamiento de Windows Server 2016 llegaron grandes noticias. Y no estamos hablando de alguna máquina virtual hábilmente oculta o de una emulación de Windows en un kernel de Linux: Windows real se ejecuta en Docker real, con Dockerfile, docker-compose y otros Docker en ejecución. cosa .

Restricciones

Pero esto no significa que ahora puedas ejecutar cualquier contenedor en cualquier lugar. Debido al hecho de que los contenedores Docker “prestan” el kernel del sistema operativo de su host (de lo contrario, tendrían que tener su propio sistema operativo y convertirse en una máquina virtual), los contenedores de Windows solo se pueden ejecutar con la última actualización de aniversario de Windows 10 Pro y Servidor Windows 2016.

El segundo punto es que todavía es imposible ejecutar un contenedor nativo de Linux en Windows. La Actualización de aniversario tiene su propio subsistema de Linux (con el que puede ejecutar Bash real, por ejemplo), pero no soporta un kernel de Linux completo, por lo que el mismo contenedor con Ubuntu en Windows todavía necesita una máquina virtual oculta.

Finalmente, puedes ejecutar ambos contenedores en una máquina con Windows al mismo tiempo, pero con cierta dificultad. Si ejecuta este comando en Windows Server 2016 con Docker instalado (hace un año lo habría llamado brujería), funcionará:

Pero si después de este comando intentas iniciar un contenedor de Ubuntu, Docker se pondrá triste:

El problema es que los contenedores de Windows y Linux son atendidos por diferentes demonios Docker, que, sin embargo, utilizan el mismo canal para comunicarse con la línea de comandos. Es decir, en un momento dado sólo un demonio puede estar activo. Hay una versión beta de “Docker para Windows” en el sitio web oficial de Docker que intenta solucionar el problema (solo en Windows 10 Pro y Enterprise por ahora). Pero incluso con esto, para cambiar de contenedores de Windows a Linux, debe ir al menú de configuración o comunicarse con la línea de comando:

Potencia Shell

& "C:\Archivos de programa\Docker\Docker\DockerCli.exe" -SwitchDaemon

& "C:\Archivos de programa\Docker\Docker\DockerCli.exe"-SwitchDaemon

Imágenes de Windows

Hasta ahora sólo hay dos imágenes básicas con Windows en contenedores:

No puedes crear tu propia imagen básica (imagen borrador).

La imagen de Windows Server Core pesa hasta 10 gigas y generalmente se comporta como un Windows Server 2016 completo. Por ejemplo, MS SQL y un .NET Framework completo se instalan allí sin problemas. Si su aplicación no depende en gran medida de la interfaz de usuario, se instalará.

Nano Server es un poco más interesante. Es un Windows Server altamente optimizado y simplificado que pesa menos de un giga. Pero también hay suficientes restricciones: no se permiten aplicaciones de 32 bits, UI, RDP, PowerShell cortado, etc. Pero esto no le impide instalar el mismo IIS, .NET Core e incluso algo de MySQL en Nano Server.

¿Y quién podría haber imaginado hace un par de años que en un Dockerfile se podrían encontrar “Microsoft”, “Windows” y “PowerShell” a la vez?

DESDE microsoft/windowsservercore EJECUTE powershell -Comando....

DESDE microsoft/windowsservercore

EJECUTAR powershell - Comando. . . .

¡Es Windows en Docker! Todavía suena absurdo.

Grados de aislamiento

Los contenedores de Windows se pueden ejecutar en dos modos de aislamiento:

  • Contenedores de servidores de Windows
  • Contenedores Hyper-V

En el primer modo de Windows, los contenedores se comportan igual que todos los demás contenedores en Docker: comparten un kernel común con el sistema operativo, los procesos del contenedor están aislados pero aún son visibles en el árbol de procesos del host, etc. Este es el modo predeterminado y más de manera rápida ejecute el contenedor en Windows.

En el segundo caso, los contenedores caen en una máquina virtual especial Hyper-V. Esto, por supuesto, tiene un efecto negativo en la velocidad de inicio, pero el aislamiento es completo.

Conclusión

Windows en Docker es una gran noticia. Incluso si no se apresura a empaquetar sus productos en contenedores, esta es una gran herramienta para aislar sus pruebas unitarias, máquinas de producción, servidores de demostración, entornos sandbox: todo para lo que anteriormente tuvo que crear una máquina virtual. Si Microsoft aún logra lanzar nanoservidor en Linux, entonces los perdonaré por la reciente interrupción del suministro de Microsoft Band 2, que compré imprudentemente dos meses antes.

Los sistemas *nix implementan inicialmente la multitarea y ofrecen herramientas que permiten aislar y controlar procesos. Tecnologías como chroot(), que proporciona aislamiento a nivel del sistema de archivos, FreeBSD Jail, que restringe el acceso a las estructuras del kernel, LXC y OpenVZ, se conocen y utilizan ampliamente desde hace mucho tiempo. Pero el impulso para el desarrollo de la tecnología fue Docker, que hizo posible distribuir aplicaciones cómodamente. Ahora le ha sucedido lo mismo a Windows.

Contenedores en Windows

Los servidores modernos tienen un exceso de capacidad y, a veces, las aplicaciones ni siquiera utilizan parte de ellos. Como resultado, los sistemas “permanecen inactivos” durante algún tiempo, calentando el aire. La solución fue la virtualización, que permite ejecutar varios sistemas operativos en un servidor, garantizando la separación entre ellos y asignando la cantidad necesaria de recursos a cada uno. Pero el progreso no se detiene. La siguiente etapa son los microservicios, cuando cada parte de la aplicación se implementa por separado, como un componente autosuficiente que se puede escalar y actualizar fácilmente a la carga requerida. El aislamiento evita que otras aplicaciones interfieran con el microservicio. Con la llegada del proyecto Docker, que simplificó el proceso de empaquetar y entregar aplicaciones junto con el entorno, la arquitectura de microservicios recibió un impulso adicional en el desarrollo.

Los contenedores son otro tipo de virtualización que proporciona un entorno independiente para ejecutar aplicaciones, llamado virtualización del sistema operativo. Los contenedores se implementan mediante el uso de un espacio de nombres aislado, que incluye todos los recursos necesarios para el funcionamiento (nombres virtualizados), con los que se puede interactuar (archivos, puertos de red, procesos, etc.) y del que no se puede salir. Es decir, el sistema operativo muestra al contenedor solo lo que está asignado. La aplicación dentro del contenedor cree que es la única y se ejecuta en un sistema operativo completo sin restricciones. Si es necesario cambiar un archivo existente o crear uno nuevo, el contenedor recibe copias del sistema operativo principal del host, guardando solo las secciones modificadas. Por lo tanto, implementar múltiples contenedores en un solo host es muy eficiente.

La diferencia entre contenedores y máquinas virtuales es que los contenedores no cargan sus propias copias del sistema operativo, bibliotecas, archivos del sistema, etc. Sistema operativo como si fuera compartido con el contenedor. Lo único adicional que se requiere son los recursos necesarios para ejecutar la aplicación en el contenedor. Como resultado, el contenedor se inicia en cuestión de segundos y carga el sistema menos que cuando se utilizan máquinas virtuales. Docker ofrece actualmente 180 mil aplicaciones en el repositorio y el formato está unificado por la Open Container Initiative (OCI). Pero la dependencia del kernel significa que los contenedores no funcionarán en otro sistema operativo. Los contenedores de Linux requieren la API de Linux, por lo que Windows no funcionará en Linux.

Hasta hace poco, los desarrolladores de Windows ofrecían dos tecnologías de virtualización: máquinas virtuales y aplicaciones virtuales Server App-V. Cada uno tiene su propio nicho de aplicación, sus pros y sus contras. Ahora la gama se ha ampliado: se han anunciado contenedores en Windows Server 2016. Y aunque en el momento del TP4 el desarrollo aún no había finalizado, ya es muy posible ver la nueva tecnología en acción y sacar conclusiones. Cabe señalar que, al ponerse al día y tener a mano tecnologías listas para usar, los desarrolladores de MS fueron un poco más allá en algunos temas, por lo que el uso de contenedores se volvió más fácil y universal. La principal diferencia es que se ofrecen dos tipos de contenedores: contenedores de Windows y contenedores de Hyper-V. En TP3 sólo estaban disponibles los primeros.

Los contenedores de Windows utilizan un núcleo con el sistema operativo, que se comparte dinámicamente entre ellos. El proceso de distribución (CPU, RAM, red) lo asume el sistema operativo. Si es necesario, puede limitar los recursos máximos disponibles asignados al contenedor. Los archivos del sistema operativo y los servicios en ejecución se asignan al espacio de nombres de cada contenedor. Este tipo de contenedor utiliza los recursos de manera eficiente, lo que reduce los gastos generales y, por lo tanto, permite que las aplicaciones se coloquen de manera más densa. Este modo recuerda un poco a FreeBSD Jail o Linux OpenVZ.

Los contenedores Hyper-V proporcionan un nivel adicional de aislamiento utilizando Hyper-V. A cada contenedor se le asigna su propio kernel y memoria; el aislamiento no lo lleva a cabo el kernel del sistema operativo, sino el hipervisor Hyper-V. El resultado es el mismo nivel de aislamiento que las máquinas virtuales, con menos gastos generales que las VM, pero más gastos generales que los contenedores de Windows. Para utilizar este tipo de contenedor, debe instalar la función Hyper-V en el host. Los contenedores de Windows son más adecuados para su uso en un entorno confiable, como cuando se ejecutan aplicaciones de la misma organización en un servidor. Cuando varias empresas utilizan un servidor y se necesita un mayor nivel de aislamiento, es probable que los contenedores Hyper-V tengan más sentido.

Una característica importante de los contenedores en Win 2016 es que el tipo no se selecciona en el momento de la creación, sino en el momento de la implementación. Es decir, cualquier contenedor se puede ejecutar tanto en Windows como en Hyper-V.

En Win 2016, la capa de abstracción de la pila de Container Management, que implementa todas las funciones necesarias, es responsable de los contenedores. El formato de imagen del disco duro VHDX se utiliza para el almacenamiento. Los contenedores, como en el caso de Docker, se guardan en imágenes en el repositorio. Además, cada uno no guarda un conjunto completo de datos, sino solo las diferencias entre la imagen creada y la base, y en el momento del lanzamiento, todos los datos necesarios se proyectan en la memoria. Se utiliza un conmutador virtual para gestionar el tráfico de red entre el contenedor y la red física.

Server Core o Nano Server se pueden utilizar como sistema operativo en el contenedor. El primero, en general, no es nuevo desde hace mucho tiempo y proporciona nivel alto compatibilidad con aplicaciones existentes. La segunda es una versión aún más simplificada para trabajar sin monitor, lo que le permite ejecutar el servidor en la configuración mínima posible para usar con Hyper-V, servidor de archivos (SOFS) y servicios en la nube. Por supuesto, no hay ninguna interfaz gráfica. Contiene solo los componentes más necesarios (.NET con CoreCLR, Hyper-V, Clustering, etc.). Pero al final ocupa un 93% menos de espacio y requiere menos correcciones críticas.

Otro punto interesante. Para gestionar contenedores, además del PowerShell tradicional, también puedes utilizar Docker. Y para brindar la capacidad de ejecutar utilidades no nativas en Win, MS se ha asociado para ampliar la API y el kit de herramientas de Docker. Todos los desarrollos están abiertos y disponibles en el GitHub oficial del proyecto Docker. Los comandos de administración de Docker se aplican a todos los contenedores, tanto Win como Linux. Aunque, por supuesto, es imposible ejecutar un contenedor creado en Linux en Windows (y viceversa). Actualmente, PowerShell tiene una funcionalidad limitada y solo le permite trabajar con un repositorio local.

Contenedores de instalación

Azure tiene la imagen requerida de Windows Server 2016 Core con Containers Tech Preview 4 que puede implementar y usar para explorar contenedores. De lo contrario, deberá configurar todo usted mismo. Para la instalación local necesita Win 2016 y, dado que Hyper-V en Win 2016 admite la virtualización anidada, puede ser un servidor físico o virtual. El proceso de instalación de componentes en sí es estándar. Seleccione el elemento apropiado en el Asistente para agregar funciones y características o, usando PowerShell, emita el comando

PD> Instalar-Contenedores de características de Windows

Durante el proceso también se instalará el controlador de red Virtual Switch, el mismo debe configurarse inmediatamente, de lo contrario acciones posteriores generarán un error. Veamos los nombres de los adaptadores de red:

PD>Get-NetAdapter

Para funcionar, necesitamos un controlador del tipo Externo. El cmdlet New-VMSwitch tiene muchos parámetros, pero en este ejemplo nos conformaremos con la configuración mínima:

PS> Nuevo-VMSwitch -Nombre Externo -NetAdapterName Ethernet0

Verificamos:

PD> Obtener-VMSwitch | donde ($_.SwitchType –eq "Externo")

El firewall de Windows bloqueará las conexiones al contenedor. Por lo tanto, es necesario crear una regla que lo permita, al menos para poder conectarse remotamente usando PowerShell remoto, para esto permitiremos TCP/80 y crearemos una regla NAT:

PS> New-NetFirewallRule -Nombre "TCP80" -DisplayName "HTTP en TCP/80" -Protocolo tcp -LocalPort 80 -Acción Permitir -Enabled True PS> Add-NetNatStaticMapping -NatName "ContainerNat" -Protocolo TCP -ExternalIPAddress 0.0.0.0 - Dirección IP interna 192.168.1.2 -Puerto interno 80 -Puerto externo 80

Existe otra opción para una implementación sencilla. Los desarrolladores han preparado un script que permite instalar todas las dependencias automáticamente y configurar el host. Puedes usarlo si lo deseas. Los parámetros dentro del script le ayudarán a comprender todos los mecanismos:

PD> https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1 PS> C:\Install-ContainerHost.ps1

Existe otra opción: implementar una máquina virtual lista para usar con soporte para contenedores. Para hacer esto, hay un script en el mismo recurso que produce automáticamente todo operaciones necesarias. instrucciones detalladas listado en MSDN. Descargue y ejecute el script:

PS> wget -uri https://aka.ms/tp4/New-ContainerHost -OutFile c:\New-ContainerHost.ps1 PS> C:\New-ContainerHost.ps1 –VmName WinContainer -WindowsImage ServerDatacenterCore

Establecemos el nombre de forma arbitraria y -WindowsImage indica el tipo de imagen que se recopila. Las opciones podrían ser NanoServer, ServerDatacenter. Docker también se instala inmediatamente; los parámetros SkipDocker e IncludeDocker son responsables de su ausencia o presencia. Después del lanzamiento, comenzará la descarga y conversión de la imagen; durante el proceso deberá especificar una contraseña para iniciar sesión en la VM. El archivo ISO en sí es bastante grande, casi 5 GB. Si el canal es lento, el archivo se puede descargar en otra computadora, luego cambiarle el nombre a WindowsServerTP4 y copiarlo a C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks. Podemos iniciar sesión en la máquina virtual instalada, especificando la contraseña especificada durante el ensamblaje y trabajando.

Ahora puede pasar directamente al uso de contenedores.

Usando contenedores con PowerShell

El módulo Contenedores contiene 32 cmdlets de PowerShell, algunos de los cuales aún están incompletos, aunque generalmente son suficientes para que todo funcione. Es fácil enumerar:

PS> Get-Command -contenedores del módulo

Puede obtener una lista de imágenes disponibles utilizando el cmdlet Get-ContainerImage, contenedores - Get-Container. En el caso de un contenedor, la columna Estado mostrará su estado actual: detenido o en ejecución. Pero mientras la tecnología está en desarrollo, MS no ha proporcionado un repositorio y, como se mencionó, PowerShell actualmente funciona con un repositorio local, por lo que para los experimentos tendrá que crearlo usted mismo.

Entonces, tenemos un servidor con soporte, ahora necesitamos los propios contenedores. Para hacer esto, instale el proveedor de paquetes ContainerProvider.

La continuación está disponible sólo para miembros.

Opción 1. Únase a la comunidad del "sitio" para leer todos los materiales del sitio

¡La membresía en la comunidad dentro del período especificado le dará acceso a TODOS los materiales de Hacker, aumentará su descuento acumulativo personal y le permitirá acumular una calificación profesional de Xakep Score!