Aggiornamento 3: 06.2019
Alcuni dei commenti dicono che la risposta non è chiara, cercherò di chiarire.
TL; DR:
D: I contenitori di Windows possono essere eseguiti su Linux?
A: No. Non possono.
I contenitori utilizzano le risorse e i driver del sistema operativo sottostante, quindi i contenitori Windows possono essere eseguiti solo su Windows e i contenitori Linux possono essere eseguiti solo su Linux.
D: E Docker per Windows? O altre soluzioni basate su VM?
A: Docker per Windows consente di simulare l'esecuzione di contenitori Linux su Windows , ma sotto il cofano viene creata una VM Linux, quindi i contenitori Linux sono in esecuzione su Linux e i contenitori Windows sono in esecuzione su Windows .
Bonus: leggi questo bellissimo articolo sull'esecuzione di contenitori docker Linux su Windows.
D: Quindi, cosa devo fare con un'app .Net Framework 462, se mi piacerebbe eseguire in un contenitore?
A: Dipende. Di seguito diversi consigli:
- Se possibile, passa a .Net Core. Poiché .Net Core supporta le principali funzionalità di .Net Framework e .Net Framework 4.8 sarà l'ultima versione di .Net framework
Se non riesci a migrare su .Net Core - Come accennato da @Sebastian - puoi convertire le tue librerie in .Net Standard e avere 2 versioni di app - una su .Net Framework 4.6.2 e una su .Net Core - non è sempre ovvio, Visual Studio lo supporta abbastanza bene (con multi-targeting), ma alcune dipendenze possono richiedere cure extra.
(Meno consigliato) In alcuni casi, è possibile eseguire i contenitori di Windows. I contenitori di Windows stanno diventando sempre più maturi, con un supporto migliore in piattaforme come Kubernetes. Per poter eseguire il codice .Net Framework, è comunque necessario eseguire sull'immagine di base di "Server Core", che occupa circa 1,4 GB. Negli stessi rari casi, è possibile migrare il codice su .Net Core, ma eseguire comunque su server Windows Nano, con una dimensione dell'immagine di 95 MB.
Lasciando anche i vecchi aggiornamenti per la storia
Update2: 08,2018
Se si utilizza Docker-per-Windows, è possibile eseguire ora entrambe le finestre e contenitori Linux simultaneamente : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- e linux-contenitori-simultaneamente-/
Bonus: non direttamente correlato alla domanda, ma ora puoi eseguire non solo il contenitore Linux stesso, ma anche orchestratore come kubernetes: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-desktop-stabile-channel /
Aggiornato al 2018:
La risposta originale in generale è corretta, MA diversi mesi fa, Docker ha aggiunto la funzione sperimentale LCOW ( repository ufficiale di github ).
Da questo post :
Docker per Windows non esegue già container Linux? Giusto. Docker per Windows può eseguire container Linux o Windows, con supporto per container Linux tramite una VM Hyper-V Moby Linux (a partire da Docker per Windows 17.10 questa VM si basa su LinuxKit).
L'impostazione per l'esecuzione di container Linux con LCOW è molto più semplice dell'architettura precedente in cui una VM Linux Hyper-V esegue un demone Docker Linux, insieme a tutti i container. Con LCOW, il daemon Docker viene eseguito come processo Windows (come quando si eseguono contenitori Docker Windows), e ogni volta che si avvia un contenitore Linux Docker avvia un hypervisor Hyper-V minimo che esegue una VM con un kernel Linux, runc e i processi contenitore correre in cima.
Poiché esiste un solo demone Docker e poiché quel demone ora funziona su Windows, sarà presto possibile eseguire i contenitori Docker Windows e Linux fianco a fianco, nello stesso spazio dei nomi di rete . Questo sbloccherà molti interessanti scenari di sviluppo e produzione per gli utenti Docker su Windows.
Originale:
Come menzionato nei commenti di @PanagiotisKanavos, i contenitori non sono destinati alla virtualizzazione e utilizzano le risorse del computer host . Di conseguenza, per ora il contenitore di Windows non può eseguire "così com'è" sulla macchina linux.
Ma - puoi farlo utilizzando VM - come funziona su Windows. Puoi installare Windows VM sul tuo host linux, che consentirà di eseguire i contenitori di Windows.
Con esso, IMHO eseguirlo in questo modo sull'ambiente PROD non sarà la migliore idea.
Inoltre, questa risposta fornisce maggiori dettagli.