Container basitce izole bir ortamda process'in calismasi icin gerekli yapi anlamina geliyor. Docker'in yaptigi bu. Senin bilgisayarinda process x, senin isletim sistemindeki network uzerinden, isletim sistemindeki firewall tanimlari uzerinden, isletim sisteminde calisan diger processlerin kullandigi shared memory uzerinden islem yurutuyor. Containerize edildiginde, kendine has bir network, CPU - memory - disk kisitlamasi uzerinden calisiyor. Boylelikle tam anlamiyla istedigimiz sartlari saglayan modelde izole bir ortamda uygulamayi calistirabiliyor. X programi icin MySQL version 5, nginx version 13, apache 4.8, tomcat 8.4 , SSL 3.6 , JDK 1.8.42, AWS toolkit bilmemne, telnet version hede, python 3.6 vs gerekiyor diyelim. Ama JDK 11 olursa, python 2 olursa calismiyor. Tum bu prerequisite'leri tek bir container altinda toplayip izole bir "kutu" olusturabiliyorsun docker sayesinde. Docker bu alanda tek degil, alternatifleri de var. Ayrica bu yapinin getirdigi bir overhead ve performans kaybi da var ama cok buyuk rahatlik sagliyor.
Windows uzerinde gelistirme yapmiyorum, powershell yeteneklerini cok bilmiyorum acikcasi. Docker ve Windows zaten cok iyi anlasan 2 yapi degil, belki zamanla duzeltmislerdir ama sanmiyorum. Bence containerization olaylarina gireceksen Linux'te takil.