Atualização3: 06.2019
Alguns dos comentários dizem que a resposta não está clara, tentarei esclarecer.
TL; DR:
P: Os contêineres do Windows podem ser executados no Linux?
A: Não. Eles não podem.
Os contêineres estão usando os recursos e drivers subjacentes do sistema operacional, para que os contêineres do Windows possam ser executados apenas no Windows e os contêineres do Linux possam ser executados apenas no Linux.
P: Mas e o Docker for Windows? Ou outras soluções baseadas em VM?
R: O Docker para Windows permite simular a execução de contêineres Linux no Windows , mas, sob o capô, uma VM Linux é criada; portanto, os contêineres Linux ainda estão em execução no Linux e os contêineres do Windows em execução no Windows .
Bônus: leia este artigo muito bom sobre a execução de contêineres do docker Linux no Windows.
P: Então, o que devo fazer com um aplicativo .Net Framework 462, se desejar executar em um contêiner?
A: depende. Seguindo várias recomendações:
- Se possível, vá para o .Net Core. Como o .Net Core oferece suporte aos principais recursos do .Net Framework, o .Net Framework 4.8 será a última versão do .Net Framework
Se você não pode migrar para o .Net Core - como o @Sebastian mencionou - você pode converter suas bibliotecas no .Net Standard e ter 2 versões do aplicativo - uma no .Net Framework 4.6.2 e outra no .Net Core - não é sempre óbvio, o Visual Studio o suporta muito bem (com várias segmentações), mas algumas dependências podem exigir cuidados extras.
(Menos recomendado) Em alguns casos, você pode executar contêineres do Windows. Os contêineres do Windows estão se tornando cada vez mais maduros, com melhor suporte em plataformas como o Kubernetes. Mas para poder executar o código do .NET Framework, você ainda precisa executar a imagem base do "Server Core", que ocupa cerca de 1,4 GB. Nos mesmos casos raros, você pode migrar seu código para o .Net Core, mas ainda executar nos servidores Windows Nano, com um tamanho de imagem de 95 MB.
Deixando também as atualizações antigas da história
Atualização2: 08.2018
Se você estiver usando o Docker-for-Windows, poderá executar agora os contêineres Windows e Linux simultaneamente : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- e-linux-containers-simultaneamente /
Bônus: não está diretamente relacionado à pergunta, mas agora você pode executar não apenas o contêiner linux em si, mas também orquestradores como o kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stable-channel /
Atualizado em 2018:
A resposta original em geral está certa, mas há alguns meses, o docker adicionou o recurso experimental LCOW ( repositório oficial do github ).
A partir deste post :
O Docker para Windows já não executa contêineres Linux? Está certo. O Docker para Windows pode executar contêineres Linux ou Windows, com suporte para contêineres Linux por meio de uma VM Hyper-V Moby Linux (a partir do Docker for Windows 17.10, essa VM é baseada no LinuxKit).
A configuração para executar contêineres Linux com LCOW é muito mais simples que a arquitetura anterior, na qual uma VM Linux Hyper-V executa um daemon Linux Docker, junto com todos os seus contêineres. Com o LCOW, o daemon do Docker é executado como um processo do Windows (o mesmo que ao executar contêineres do Docker Windows) e toda vez que você inicia um contêiner do Linux, o Docker lança um hipervisor Hyper-V mínimo executando uma VM com um kernel Linux, runc e os processos do contêiner correndo por cima.
Como existe apenas um daemon do Docker, e como esse daemon agora é executado no Windows, em breve será possível executar contêineres do Windows e Linux Docker lado a lado, no mesmo espaço de nome de rede . Isso desbloqueará muitos cenários interessantes de desenvolvimento e produção para usuários do Docker no Windows.
Original:
Conforme mencionado nos comentários de @PanagiotisKanavos, os contêineres não são para virtualização e estão usando os recursos da máquina host . Como resultado, por enquanto, o contêiner do Windows não pode ser executado "como está" na máquina Linux.
Mas - você pode fazer isso usando a VM -, pois funciona no Windows. Você pode instalar o Windows VM no seu host Linux, o que permitirá executar contêineres do Windows.
Com isso, IMHO executá-lo dessa maneira no ambiente PROD não será a melhor idéia.
Além disso, esta resposta fornece mais detalhes.