Güncelleme3: 06.2019
Bazı yorumlar cevabın net olmadığını söylüyor, açıklığa kavuşturmaya çalışacağım.
TL; DR:
S: Windows kapsayıcıları Linux üzerinde çalışabilir mi?
C: Hayır. Yapamazlar.
Kapsayıcılar temel İşletim Sistemi kaynaklarını ve sürücülerini kullanır, bu nedenle Windows kapsayıcıları yalnızca Windows üzerinde ve Linux kapsayıcıları yalnızca Linux üzerinde çalışabilir.
S: Peki Windows için Docker ne olacak? Veya diğer VM tabanlı çözümler?
A: Windows için Docker çalıştırmakta elde etmenizi sağlar Linux üzerinde kapları , Windows , ama başlık altında Linux VM yüzden hala oluşturulur Linux konteynerler Linux üzerinde çalışan ve Windows konteynerler Windows üzerinde çalışan .
Bonus: Windows'ta Linux docker kapsayıcılarını çalıştırmakla ilgili bu çok güzel makaleyi okuyun .
S: Peki, bir kapta çalıştırmak istersem .Net Framework 462 uygulamasıyla ne yapmalıyım?
A: bağlıdır. Birkaç öneri aşağıdaki:
- Mümkünse .Net Core'a gidin. .Net Core, .Net Framework'ün en önemli özelliklerine destek sağladığı için .Net Framework 4.8 , .Net framework'ün son sürümü olacak
.Net Core'a geçemiyorsanız - @Sebastian'ın belirttiği gibi - kütüphanelerinizi .Net Standard'a dönüştürebilir ve bir .Net Framework 4.6.2 üzerinde ve .Net Core'da bir tane olmak üzere 2 uygulama sürümüne sahip olabilirsiniz. her zaman açıktır, Visual Studio bunu çok iyi destekler (çoklu hedefleme ile), ancak bazı bağımlılıklar ekstra bakım gerektirebilir.
(Daha az önerilir) Bazı durumlarda, Windows kapsayıcılarını çalıştırabilirsiniz. Windows kapsayıcılar gittikçe olgunlaşıyor ve Kubernetes gibi platformlarda daha iyi destek sağlıyor. Ancak .Net Framework kodunu çalıştırabilmek için, yaklaşık 1,4 GB alan "Sunucu Çekirdeği" temel görüntüsünde çalıştırmanız gerekir. Aynı nadir durumlarda, kodunuzu .Net Core'a taşıyabilirsiniz, ancak yine de 95 MB görüntü boyutuna sahip Windows Nano sunucularında çalıştırabilirsiniz.
Tarihin eski güncellemelerini de bırakmak
Güncelleme2: 08.2018
Windows için Docker kullanıyorsanız, şimdi hem windows hem de linux kapsayıcılarını aynı anda çalıştırabilirsiniz : https://blogs.msdn.microsoft.com/premier_developer/2018/04/20/running-docker-windows- ve-linux-konteynerler-eşzamanlı /
Bonus: Doğrudan soru ile ilgili değil, şimdi sadece linux konteynerin kendisini değil, aynı zamanda kubernetes gibi orkestratörü de çalıştırabilirsiniz: https://blog.docker.com/2018/07/kubernetes-is-now-available-in -docker-masaüstü-kararlı-kanal /
2018'de güncellendi:
Orijinal cevap genel olarak doğru, AMA birkaç ay önce, docker deneysel özellik LCOW ( resmi github deposu ) ekledi .
Gönderen bu yazı :
Windows için Docker zaten Linux kapsayıcıları çalıştırmıyor mu? Doğru. Windows için Docker, Hyper-V Moby Linux VM aracılığıyla Linux kapsayıcıları desteğiyle Linux veya Windows kapsayıcılar çalıştırabilir (Windows 17.10 için Docker'dan itibaren bu VM LinuxKit tabanlıdır).
Linux kapsayıcılarını LCOW ile çalıştırmak için kurulum, Hyper-V Linux VM'nin tüm kaplarınızla birlikte bir Linux Docker arka plan programı çalıştırdığı önceki mimariden çok daha basittir . LCOW ile Docker arka plan programı bir Windows işlemi olarak çalışır (Docker Windows kapsayıcılarını çalıştırırken olduğu gibi) ve bir Linux kapsayıcısını her başlattığınızda Docker, Linux çekirdeği, runc ve kap işlemleri ile VM çalıştıran minimal bir Hyper-V hipervizörü başlatır üstte çalışıyor.
Yalnızca bir Docker arka plan programı olduğundan ve bu arka plan programı artık Windows üzerinde çalıştığı için, Windows ve Linux Docker kapsayıcılarını aynı ağ ad alanında yan yana çalıştırmak mümkün olmayacaktır . Bu, Windows'ta Docker kullanıcıları için birçok heyecan verici geliştirme ve üretim senaryosunun kilidini açacaktır.
Orijinal:
@PanagiotisKanavos'un yorumlarında belirtildiği gibi, kaplar sanallaştırma için değildir ve ana makinenin kaynaklarını kullanmaktadır . Sonuç olarak, şimdilik windows konteyner linux makinesinde olduğu gibi çalışamaz.
Ancak - Windows üzerinde çalıştığı için VM kullanarak yapabilirsiniz. Linux ana makinenize Windows kapsayıcılarını çalıştıracak Windows VM'yi yükleyebilirsiniz.
Bununla beraber, IMHO bunu PROD ortamında bu şekilde çalıştırmak en iyi fikir olmayacaktır.
Ayrıca, bu cevap daha fazla ayrıntı sağlar.