Actualización3: 06.2019
Algunos de los comentarios dicen que la respuesta no está clara, intentaré aclarar.
TL; DR:
P: ¿Los contenedores de Windows pueden ejecutarse en Linux?
A: No. No pueden.
Los contenedores utilizan los recursos y controladores subyacentes del sistema operativo, por lo que los contenedores de Windows pueden ejecutarse solo en Windows, y los contenedores de Linux pueden ejecutarse solo 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 máquina virtual 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?
A: depende. Siguiendo varias recomendaciones:
- Si es posible, muévase a .Net Core. Dado que .Net Core brinda soporte a la mayoría de las características 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 2 versiones de la aplicación, una en .Net Framework 4.6.2 y otra en .Net Core, no es siempre obvio, Visual Studio lo admite bastante bien (con múltiples objetivos), pero algunas dependencias pueden requerir un cuidado adicional.
(Menos recomendado) En algunos casos, puede ejecutar contenedores de Windows. Los contenedores de Windows son cada vez más maduros, con un mejor soporte en plataformas como Kubernetes. Pero para poder ejecutar el código de .Net Framework, aún debe ejecutarse en la imagen base de "Server Core", que ocupa aproximadamente 1,4 GB. En los mismos casos raros, puede migrar su código a .Net Core, pero aun así ejecutarlo en servidores Windows Nano, con un tamaño de imagen de 95 MB.
Dejando también las viejas actualizaciones para la historia
Actualización2: 08.2018
Si está utilizando Docker-for-Windows, ahora puede ejecutar Windows y contenedores de Linux simultáneamente : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- y-linux-contenedores-simultáneamente /
Bonificación: no está directamente relacionado con la pregunta, pero ahora puede ejecutar no solo el contenedor de Linux en sí, sino también el orquestador como kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stable-channel /
Actualizado en 2018:
La respuesta original en general es correcta, PERO hace varios meses, Docker agregó la función 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 Linux o Windows, con soporte para contenedores Linux a través de una VM Hyper-V Moby Linux (a partir de Docker para Windows 17.10 esta VM se basa en LinuxKit).
La configuración para ejecutar contenedores 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 Docker se ejecuta como un proceso de Windows (igual que cuando se ejecutan contenedores de Windows Docker), y cada vez que inicia un contenedor de Linux, Docker lanza un hipervisor Hyper-V mínimo que ejecuta una VM con un kernel de Linux, runc y los procesos de contenedor. corriendo en la parte superior.
Debido a que solo hay un demonio Docker, y dado que ese demonio ahora se ejecuta en Windows, pronto será posible ejecutar contenedores Docker de Windows y Linux uno al lado del otro, en el mismo espacio de nombres de red . Esto desbloqueará muchos escenarios interesantes de desarrollo y producción para los usuarios de Docker en Windows.
Original:
Como se mencionó en los comentarios de @PanagiotisKanavos, los contenedores no son para virtualización y están utilizando los recursos de la máquina host . Como resultado, por ahora el contenedor de Windows no puede ejecutarse "tal cual" en la máquina Linux.
Pero , puede hacerlo utilizando VM, ya que funciona en Windows. Puede instalar Windows VM en su host de Linux, lo que permitirá ejecutar contenedores de Windows.
Con él, en mi humilde opinión, ejecutarlo de esta manera en el entorno PROD no será la mejor idea.
Además, esta respuesta proporciona más detalles.