TL;DR:
P: ¿Se pueden ejecutar contenedores de Windows en Linux?
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 máquinas virtuales?
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?
-
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 se están volviendo 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 el historial
Actualización 2:08/2018
Si está utilizando Docker-for-Windows, puede ejecutar ahora 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 el canal estable de Docker Desktop
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 Linux con LCOW es mucho más simple que la arquitectura anterior donde una máquina virtual Hyper-V Linux ejecuta un Dockerdaemon 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 Linuxkernel, runc y los procesos de contenedor que se ejecutan en la parte superior.
Debido a que solo hay un demonio de Docker, y dado que ese demonio ahora se ejecuta en Windows, pronto será posible ejecutar contenedores de Windows y LinuxDocker 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 mencionó en los comentarios de @PanagiotisKanavos, los contenedores no son para la virtualización y están utilizando 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 una máquina virtual de Windows en su host Linux, lo que le permitirá ejecutar contenedores de Windows.
Con él, en mi humilde opinión, ejecutándolo de esta manera en una producción ambiente no será la mejor idea.
Además, esta respuesta proporciona más detalles.
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.