Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

412
Views
¿Se pueden alojar contenedores de Windows en Linux?

¿Es posible ejecutar contenedores de Windows en Linux? El escenario se basa en una aplicación escrita en .NET (red antigua) y el usuario de Linux que quiere ejecutar esto con Docker para proporcionar una API escrita net462 en el host localhost .

Estoy usando la versión beta de Docker Desktop para Windows .

Si no, ¿por qué Windows puede ejecutar contenedores de Linux y no al revés?


Como ha pasado algún tiempo y esta pregunta es popular. Me gustaría agregar una nota aquí de que la solución es usar el nuevo estándar de red. Me permitió empaquetar el marco 4.6.2 en una nueva biblioteca.

over 4 years ago · Santiago Trujillo
9 answers
Answer question

0

TL;RD:

P: ¿Se pueden ejecutar contenedores de Windows en Linux?

R: No. No pueden.

Los contenedores utilizan los recursos y controladores del sistema operativo subyacente, por lo que los contenedores de Windows solo pueden ejecutarse en Windows y los contenedores de Linux solo pueden ejecutarse en Linux.

P: ¿Pero qué pasa con Docker para Windows? ¿U otras soluciones basadas en VM?

R: Docker para Windows le permite simular la ejecución de contenedores de Linux en Windows , pero bajo el capó se crea una VM de Linux, por lo que los contenedores de Linux se ejecutan en Linux y los contenedores de Windows se ejecutan en Windows .

Bonificación: lea este artículo muy bueno sobre la ejecución de contenedores docker de Linux en Windows.

P: Entonces, ¿qué debo hacer con una aplicación .NET Framework 462 si quisiera ejecutarla en un contenedor?

R: Depende. Siguiendo varias recomendaciones:

  • Si es posible, muévase a .NET Core. Dado que .NET Core brinda soporte para la mayoría de las funciones principales de .NET Framework, y .NET Framework 4.8 será la última versión de .NET Framework

  • Si no puede migrar a .NET Core, como mencionó @Sebastian, puede convertir sus bibliotecas a .NET Standard y tener dos versiones de la aplicación, una en .NET Framework 4.6.2 y otra en .NET Core, es no siempre obvio. Visual Studio lo admite bastante bien (con objetivos múltiples), pero algunas dependencias pueden requerir un cuidado especial.

  • (Menos recomendado) En algunos casos, puede ejecutar contenedores de Windows. Los contenedores de Windows son cada vez más maduros, con mejor soporte en plataformas como Kubernetes . Pero para poder ejecutar el código de .NET Framework, aún debe ejecutar la imagen base de "Server Core", que ocupa alrededor de 1,4 GB. En los mismos casos excepcionales, puede migrar su código a .NET Core, pero seguir ejecutándose en el servidor Windows Nano , con un tamaño de imagen de 95 MB.

Dejando también las actualizaciones antiguas para la historia.

Actualización 2: 08.2018

Si está utilizando Docker-for-Windows, ahora puede ejecutar contenedores de Windows y Linux simultáneamente : Ejecución simultánea de contenedores de Windows y Linux de Docker

Bonificación: no está directamente relacionado con la pregunta, pero ahora puede ejecutar no solo el contenedor de Linux en sí, sino también un orquestador como Kubernetes: Kubernetes ahora está disponible en Docker Desktop Stable Channel

Actualizado en 2018:

La respuesta original en general es correcta, PERO hace varios meses, Docker agregó la característica experimental LCOW ( repositorio oficial de GitHub ).

De esta publicación :

¿Docker para Windows ya no ejecuta contenedores de Linux? Así es. Docker para Windows puede ejecutar contenedores de Linux o Windows, con soporte para contenedores de Linux a través de una máquina virtual Hyper-V Moby Linux (a partir de Docker para Windows 17.10, esta máquina virtual se basa en LinuxKit).

La configuración para ejecutar contenedores de Linux con LCOW es mucho más simple que la arquitectura anterior en la que una máquina virtual Linux de Hyper-V ejecuta un demonio Docker de Linux, junto con todos sus contenedores. Con LCOW, el demonio de Docker se ejecuta como un proceso de Windows (igual que cuando se ejecutan los contenedores de Windows de Docker), y cada vez que inicia un contenedor de Linux, Docker inicia un hipervisor Hyper-V mínimo que ejecuta una máquina virtual con un kernel de Linux, runc y los procesos del contenedor. corriendo en la parte superior.

Debido a que solo hay un demonio de Docker, y debido a que ese demonio ahora se ejecuta en Windows, pronto será posible ejecutar contenedores Docker de Windows y Linux en paralelo, en el mismo espacio de nombres de red . Esto desbloqueará una gran cantidad de emocionantes escenarios de desarrollo y producción para los usuarios de Docker en Windows.

Original:

Como se menciona en los comentarios de @PanagiotisKanavos, los contenedores no son para la virtualización y utilizan los recursos de la máquina host . Como resultado, por ahora un contenedor de Windows no puede ejecutarse "tal cual" en una máquina Linux.

Pero , puede hacerlo usando VM, ya que funciona en Windows. Puede instalar Windows VM en su host Linux, lo que le permitirá ejecutar contenedores de Windows.

Con él, en mi humilde opinión, ejecutarlo de esta manera en un entorno de producción no será la mejor idea.

Además, esta respuesta proporciona más detalles.

over 4 years ago · Santiago Trujillo Report

0

No, no puede ejecutar contenedores de Windows directamente en Linux.

Pero puedes ejecutar Linux en Windows.

Windows Server 2016 viene empaquetado con una imagen base del sistema operativo Ubuntu ( después del paquete de servicio beta de septiembre de 2016 ). Esa es la razón por la que puede ejecutar Linux en Windows y no de otra manera. Echa un vistazo aquí. Finalmente, los contenedores de Linux podrían ejecutarse en Windows con LinuxKit de Docker

Puede cambiar entre los contenedores del sistema operativo Linux y Windows haciendo clic con el botón derecho en Docker en el menú de la bandeja.

Ingrese la descripción de la imagen aquí

Ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Report

0

Puede usar contenedores de Windows dentro de una máquina virtual (el sistema operativo invitado debe cumplir con los requisitos: Windows 10 Pro o Windows Server 2016 ).

Por ejemplo, puedes usar VirtualBox . Simplemente habilite Hyper-V dentro del Sistema → Aceleración → Interfaz de paravirtualización .

Después de eso, si Docker no se inicia debido a un error, use "Cambiar a contenedores de Windows..." en la configuración.

over 4 years ago · Santiago Trujillo Report

0

A diferencia de la virtualización , la creación de contenedores utiliza el mismo sistema operativo host. Entonces, el contenedor creado en Linux no se puede ejecutar en Windows y viceversa.

En Windows, debe tomar la ayuda de la virtualización (usando Hyper-V ) para tener el mismo sistema operativo que el sistema operativo de su contenedor y luego debería poder ejecutar el mismo.

Docker para Windows es una aplicación similar que se basa en Hyper-V y ayuda a ejecutar contenedores Linux Docker en Windows. Pero hasta donde yo sé, no hay nada como tal que ayude a ejecutar contenedores de Windows en Linux.

over 4 years ago · Santiago Trujillo Report

0

Puede ejecutar SQL Server y .NET Core en Linux y, por lo tanto, dentro de los contenedores de Linux, hoy en día.

Consulte: Microsoft SQL Server de Microsoft | Centro acoplable

También: .NET Core de Microsoft | Centro acoplable

La respuesta directa a su pregunta es, por supuesto, a menos que haya una versión compilada especialmente para Linux, no.

over 4 years ago · Santiago Trujillo Report

0

Solución 1: usar VirtualBox

Como sugirió Muhammad Sahputra en esta publicación , es posible ejecutar el sistema operativo Windows dentro de VirtualBox (usando VBoxHeadless, sin interfaz gráfica) dentro de un contenedor Docker .

Además, una configuración de NAT dentro de las configuraciones de red de VM puede realizar un reenvío de puertos que le brinda la capacidad de pasar cualquier tráfico que ingrese y provenga del contenedor Docker. Esto eventualmente, en una perspectiva amplia, le permite ejecutar cualquier servicio basado en Windows en la parte superior de la máquina Linux.

Tal vez este no sea un caso de uso típico de un contenedor Docker, pero definitivamente es un enfoque interesante para el problema.


Solución 2: usar vino

Para aplicaciones simples y quizás más complicadas, puede intentar usar wine dentro de un contenedor docker .

Esta página de Docker Hub puede ayudarlo a lograr su objetivo.


Espero que Docker lance una solución nativa pronto, como lo hicieron con docker-machine en Windows hace varios años.

over 4 years ago · Santiago Trujillo Report

0

Los contenedores utilizan el kernel del sistema operativo. Los contenedores de Windows utilizan procesos para ejecutarse. En teoría, los contenedores de Windows no pueden ejecutarse en Linux.

Sin embargo, existen soluciones que utilizan soluciones VMstyle.

Encontré esta solución que usa Vagrant y Packer en Mac, por lo que también debería funcionar para Linux: https://github.com/StefanScherer/windows-docker-machine

Este entorno de Vagrant crea una Docker Machine para trabajar en su MacBook con contenedores de Windows. Puede cambiar fácilmente entre los contenedores de Docker para Mac Linux y los contenedores de Windows.

Ejecutar comandos bash

Ingrese la descripción de la imagen aquí

construyendo la caja Vagrant sin cabeza

 $ git clone https://github.com/StefanScherer/packer-windows $ cd packer-windows $ packer build --only=vmware-iso windows_2019_docker.json $ vagrant box add windows_2019_docker windows_2019_docker_vmware.box

Crear la máquina Docker

 $ git clone https://github.com/StefanScherer/windows-docker-machine $ cd windows-docker-machine $ vagrant up --provider vmware_fusion 2019

Cambiar a contenedores de Windows

 $ eval $(docker-machine env 2019)
over 4 years ago · Santiago Trujillo Report

0

Si bien Docker para Windows es perfectamente capaz de ejecutar contenedores de Linux, lo contrario, aunque teóricamente posible, no se implementa por razones prácticas.

La más obvia es que, mientras que Docker para Windows puede ejecutar una VM Linux libremente, Docker para Linux requeriría una licencia de Windows para poder ejecutarlo dentro de una VM.

Además, Linux es completamente personalizable, por lo que la máquina virtual de Linux utilizada por Docker para Windows se ha reducido a unos pocos MB, y contiene solo el mínimo necesario para ejecutar los contenedores, mientras que la distribución de Windows más pequeña disponible es de aproximadamente 1,5 GB. Puede que no sea un tamaño impracticable, pero es mucho más engorroso que la contraparte de Linux en Windows.

Si bien es posible que alguien venda una variación de Docker para Linux incluida con una licencia de Windows y lista para ejecutar contenedores de Windows en Linux (y no sé si existe tal producto), la conclusión es que no puede evitar pagando el precio de bloqueo del proveedor de Windows: tanto en dinero como en espacio de almacenamiento.

over 4 years ago · Santiago Trujillo Report

0

Podemos ejecutar contenedores de Linux en Windows. Docker para Windows usa el Linux-Kit basado en Hyper-V o WSL 2 como backend para facilitar los contenedores de Linux.

Si alguna distribución de Linux tiene este tipo de configuración, podemos ejecutar contenedores de Windows. Docker para Linux solo admite contenedores de Linux.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!