{"id":31407,"date":"2025-10-09T16:01:56","date_gmt":"2025-10-09T13:01:56","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/"},"modified":"2025-10-09T16:01:56","modified_gmt":"2025-10-09T13:01:56","slug":"windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/","title":{"rendered":"Windows&#8217;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker"},"content":{"rendered":"<p><body><\/p>\n<p>Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m d\u00fcnyas\u0131nda &#8220;bir benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; c\u00fcmlesi, geli\u015ftiricilerin en b\u00fcy\u00fck kabuslar\u0131ndan biri haline geldi. S\u00fcrekli de\u011fi\u015fen ba\u011f\u0131ml\u0131l\u0131klar, farkl\u0131 i\u015fletim sistemleri ve da\u011f\u0131t\u0131m ortamlar\u0131, yaz\u0131l\u0131m geli\u015ftirme ve operasyon (DevOps) s\u00fcre\u00e7lerini karma\u015f\u0131kla\u015ft\u0131r\u0131yor. Peki, bu karma\u015fan\u0131n ortas\u0131nda nas\u0131l bir istikrar adas\u0131 yaratabiliriz? Cevap olduk\u00e7a net: Konteynerler.<\/p>\n<p>Konteynerler, uygulamalar\u0131n\u0131z\u0131 t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 (k\u00fct\u00fcphaneler, ayar dosyalar\u0131 vb.) ile birlikte izole edilmi\u015f, ta\u015f\u0131nabilir bir ortamda paketlemenizi sa\u011flayan hafif sanalla\u015ft\u0131rma teknolojileridir. Geleneksel sanal makinelerin aksine, konteynerler i\u015fletim sistemi \u00e7ekirde\u011fini payla\u015f\u0131r ve bu sayede \u00e7ok daha h\u0131zl\u0131 ba\u015flarlar, daha az kaynak t\u00fcketirler. \u00d6zellikle mikroservis mimarilerinin y\u00fckseli\u015fiyle birlikte konteynerler, yaz\u0131l\u0131m da\u011f\u0131t\u0131m\u0131n\u0131n ve \u00f6l\u00e7eklendirmenin temel ta\u015f\u0131 haline gelmi\u015ftir. Bir geli\u015ftirici olarak uygulaman\u0131z\u0131 bir konteynere paketledi\u011finizde, bu konteynerin \u00fcretim ortam\u0131nda, test ortam\u0131nda veya ba\u015fka bir geli\u015ftiricinin makinesinde ayn\u0131 \u015fekilde \u00e7al\u0131\u015faca\u011f\u0131ndan emin olabilirsiniz. Bu, tutarl\u0131l\u0131\u011f\u0131 maksimize eder ve &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sorununu b\u00fcy\u00fck \u00f6l\u00e7\u00fcde ortadan kald\u0131r\u0131r. \u00dcstelik, Windows i\u015fletim sistemi \u00fczerinde hem Windows tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 hem de Linux tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 konteynerler i\u00e7inde \u00e7al\u0131\u015ft\u0131rabilmek, hibrit mimarilere sahip i\u015fletmeler i\u00e7in oyunun kurallar\u0131n\u0131 de\u011fi\u015ftiren bir yenilik sunmaktad\u0131r. Bu makalede, Windows \u00fczerinde Docker ve WSL 2 (Windows Subsystem for Linux 2) entegrasyonu sayesinde hem Windows hem de Linux konteynerlerini nas\u0131l etkin bir \u015fekilde y\u00f6netece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz. Bu sayede, farkl\u0131 ekosistemlere ait uygulamalar\u0131n\u0131z\u0131 tek bir platformda, tutarl\u0131 ve verimli bir \u015fekilde \u00e7al\u0131\u015ft\u0131rabileceksiniz. Dolay\u0131s\u0131yla, ister .NET geli\u015ftiricisi olun ister Node.js veya Python kullan\u0131n, bu entegrasyon size muazzam bir esneklik sa\u011flayacakt\u0131r.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Konteynerler sadece da\u011f\u0131t\u0131m i\u00e7in de\u011fil, ayn\u0131 zamanda geli\u015ftirme ortam\u0131n\u0131z\u0131n h\u0131zl\u0131ca kurulmas\u0131 ve ekip \u00fcyeleri aras\u0131nda tutarl\u0131 bir geli\u015ftirme ortam\u0131 sa\u011flamak i\u00e7in de idealdir. Yeni bir ekip \u00fcyesi saniyeler i\u00e7inde t\u00fcm ba\u011f\u0131ml\u0131l\u0131klarla haz\u0131r bir ortama sahip olabilir.\n    <\/div>\n<h2>Konteyner Teknolojilerine \u0130lk Ad\u0131m: Docker ve Temel Kavramlar Nelerdir?<\/h2>\n<p>Konteyner d\u00fcnyas\u0131na ad\u0131m atarken baz\u0131 temel kavramlar\u0131 anlamak hayati \u00f6nem ta\u015f\u0131r. Konteynerle\u015ftirme teknolojisinin en pop\u00fcler ve yayg\u0131n arac\u0131 \u015f\u00fcphesiz Docker&#8217;d\u0131r. Docker, uygulamalar\u0131 konteynerler halinde paketlemek, da\u011f\u0131tmak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir platformdur. Ama Docker sadece bir ara\u00e7tan ibaret de\u011fildir; ayn\u0131 zamanda bir ekosistem, bir teknoloji ve bir felsefedir.<\/p>\n<h3>Docker \u0130maj\u0131 (Image) Nedir?<\/h3>\n<p>Docker imaj\u0131, bir uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken her \u015feyi i\u00e7eren salt okunur bir \u015fablondur. Bu, uygulaman\u0131n kodu, \u00e7al\u0131\u015fma zaman\u0131 (runtime), sistem ara\u00e7lar\u0131, k\u00fct\u00fcphaneler ve yap\u0131land\u0131rma ayarlar\u0131 gibi her \u015feyi i\u00e7erir. \u0130majlar katmanlar halinde in\u015fa edilir, bu da onlar\u0131 verimli ve hafif yapar. Bir imaj\u0131, bir sanal makine \u015fablonuna benzetebiliriz, ancak \u00e7ok daha hafiftir ve i\u015fletim sistemi \u00e7ekirde\u011fini i\u00e7ermez. \u00d6rne\u011fin, bir Node.js uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereken Node.js \u00e7al\u0131\u015fma zaman\u0131, uygulaman\u0131z\u0131n kendisi ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 tek bir Docker imaj\u0131nda paketlenir. Bu imaj, Docker Hub gibi depolarda (registries) saklanabilir ve d\u00fcnyan\u0131n herhangi bir yerindeki bir sunucuda veya yerel makinede kullan\u0131labilir.<\/p>\n<h3>Docker Konteyneri (Container) Nedir?<\/h3>\n<p>Bir Docker konteyneri, bir Docker imaj\u0131n\u0131n \u00e7al\u0131\u015fan bir \u00f6rne\u011fidir. \u0130maj, uygulaman\u0131n statik bir plan\u0131 gibiyken, konteyner bu plan\u0131n canl\u0131, \u00e7al\u0131\u015fan bir \u00f6rne\u011fidir. Bir imajdan birden fazla konteyner olu\u015fturabilirsiniz, her biri birbirinden izole ve kendi kaynaklar\u0131yla (CPU, RAM, a\u011f) \u00e7al\u0131\u015f\u0131r. Konteynerler, ana i\u015fletim sisteminden izole edilmi\u015f ortamlarda \u00e7al\u0131\u015f\u0131r, ancak ana bilgisayar\u0131n \u00e7ekirde\u011fini payla\u015f\u0131r. Bu izolasyon, bir konteynerdeki sorunlar\u0131n di\u011fer konteynerleri veya ana bilgisayar\u0131 etkilememesini sa\u011flar. Ayr\u0131ca, her konteynerin kendi dosya sistemi, a\u011f aray\u00fczleri ve s\u00fcre\u00e7 alan\u0131 vard\u0131r. Bu, uygulamalar\u0131n ba\u011f\u0131ms\u0131z bir \u015fekilde \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r ve farkl\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131 olan uygulamalar\u0131n \u00e7ak\u0131\u015fmadan ayn\u0131 sunucuda bar\u0131nd\u0131r\u0131labilmesini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>Windows Konteynerleri ve Linux Konteynerleri Aras\u0131ndaki Temel Farklar Nelerdir?<\/h3>\n<p>Bu, konumuzun en kritik noktalar\u0131ndan biridir. \u0130simlerinden de anla\u015f\u0131laca\u011f\u0131 \u00fczere, Windows konteynerleri Windows tabanl\u0131 uygulamalar\u0131 (\u00f6rne\u011fin, .NET Framework, IIS) \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131rken, Linux konteynerleri Linux tabanl\u0131 uygulamalar\u0131 (\u00f6rne\u011fin, Node.js, Python, Java, Nginx, PostgreSQL) \u00e7al\u0131\u015ft\u0131rmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Temel fark, kulland\u0131klar\u0131 i\u015fletim sistemi \u00e7ekirde\u011fidir:<\/p>\n<ul>\n<li><strong>Windows Konteynerleri:<\/strong> Windows Server Core veya Nano Server gibi Windows i\u015fletim sistemi imajlar\u0131n\u0131 temel al\u0131r ve ana bilgisayar\u0131n Windows \u00e7ekirde\u011fini kullan\u0131r. Dolay\u0131s\u0131yla, bir Windows konteynerini yaln\u0131zca bir Windows i\u015fletim sistemi \u00fczerinde \u00e7al\u0131\u015ft\u0131rabilirsiniz. Uygulaman\u0131z\u0131n Windows API&#8217;lerine veya .NET Framework&#8217;e ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 varsa, Windows konteynerleri sizin i\u00e7in do\u011fru se\u00e7imdir.<\/li>\n<li><strong>Linux Konteynerleri:<\/strong> \u00c7o\u011fu Linux da\u011f\u0131t\u0131m\u0131n\u0131n (Ubuntu, Alpine, CentOS vb.) imajlar\u0131n\u0131 temel al\u0131r ve ana bilgisayar\u0131n Linux \u00e7ekirde\u011fini kullan\u0131r. Bu, Windows \u00fczerinde Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rmak istedi\u011finizde \u00f6zel bir mekanizmaya ihtiya\u00e7 duydu\u011funuz anlam\u0131na gelir. \u0130\u015fte tam bu noktada WSL 2 devreye giriyor. WSL 2, Windows 10\/11 \u00fczerinde hafif bir sanal makinede tam bir Linux \u00e7ekirde\u011fi \u00e7al\u0131\u015ft\u0131rarak, Windows&#8217;un Linux konteynerlerini yerel olarak \u00e7al\u0131\u015ft\u0131rmas\u0131na olanak tan\u0131r.<\/li>\n<\/ul>\n<p>Sanal makineler (VM) ise, donan\u0131m\u0131n \u00fczerinde tam bir i\u015fletim sistemi (\u00e7ekirdek dahil) \u00e7al\u0131\u015ft\u0131ran, daha a\u011f\u0131r ve kaynak yo\u011fun \u00e7\u00f6z\u00fcmlerdir. Konteynerler ise i\u015fletim sistemi \u00e7ekirde\u011fini ana bilgisayarla payla\u015farak \u00e7ok daha hafif ve h\u0131zl\u0131 bir alternatif sunar. \u0130\u015fte bu hafiflik ve h\u0131z, onlar\u0131 modern DevOps pratiklerinin vazge\u00e7ilmezi yapar. Bu farkl\u0131l\u0131klar, Windows \u00fczerinde karma uygulamalar\u0131 (hem Windows hem Linux bile\u015fenleri olan) da\u011f\u0131t\u0131rken hangi konteyner tipini kullanman\u0131z gerekti\u011fini belirler. Windows \u00fczerinde her iki konteyner tipini de \u00e7al\u0131\u015ft\u0131rabilmek, geli\u015ftiricilere ve operasyon ekiplerine benzersiz bir esneklik ve g\u00fc\u00e7 katmaktad\u0131r.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Konteynerlerin temel avantajlar\u0131ndan biri, uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 ortam\u0131 &#8220;kod olarak&#8221; tan\u0131mlama yetene\u011fidir (Infrastructure as Code). Bu, Dockerfile ad\u0131 verilen basit metin dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r ve t\u00fcm ekibinizin ayn\u0131 ortam\u0131 yeniden \u00fcretebilmesini sa\u011flar.\n    <\/div>\n<h2>Windows \u00dczerinde Konteyner Ortam\u0131n\u0131 Haz\u0131rlama: Docker Desktop ve WSL 2 Kurulumu<\/h2>\n<p>Windows bilgisayar\u0131n\u0131zda hem Windows hem de Linux konteynerlerini sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00f6ncelikle do\u011fru ortam\u0131 kurman\u0131z gerekir. Bu s\u00fcrecin kalbinde Docker Desktop ve Windows Subsystem for Linux 2 (WSL 2) entegrasyonu yer al\u0131r. Bu kurulum, Windows&#8217;un do\u011fal yeteneklerini Linux&#8217;un esnekli\u011fiyle birle\u015ftirerek size g\u00fc\u00e7l\u00fc bir geli\u015ftirme ve da\u011f\u0131t\u0131m platformu sunar.<\/p>\n<h3>Gereksinimler ve \u0130lk Ad\u0131mlar<\/h3>\n<p>Ba\u015flamadan \u00f6nce, bilgisayar\u0131n\u0131z\u0131n belirli gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131ndan emin olmal\u0131s\u0131n\u0131z:<\/p>\n<ul>\n<li><strong>\u0130\u015fletim Sistemi:<\/strong> Windows 10 (S\u00fcr\u00fcm 1903 veya \u00fcst\u00fc, Build 18362 veya \u00fcst\u00fc) veya Windows 11.<\/li>\n<li><strong>Hyper-V Deste\u011fi:<\/strong> Windows Professional, Enterprise veya Education s\u00fcr\u00fcmleri gereklidir. Home s\u00fcr\u00fcm\u00fc kullan\u0131c\u0131lar\u0131 i\u00e7in WSL 2 entegrasyonu sayesinde Hyper-V&#8217;ye gerek kalmaz, ancak yine de sanalla\u015ft\u0131rma \u00f6zelli\u011finin BIOS\/UEFI&#8217;den etkinle\u015ftirilmi\u015f olmas\u0131 \u00f6nemlidir.<\/li>\n<li><strong>WSL 2 Deste\u011fi:<\/strong> Windows 10 s\u00fcr\u00fcm 2004 veya \u00fcst\u00fc (Build 19041 veya \u00fcst\u00fc) veya Windows 11.<\/li>\n<li><strong>Sanal Makine \u00d6zelli\u011fi:<\/strong> BIOS\/UEFI ayarlar\u0131n\u0131zda sanalla\u015ft\u0131rma (Intel VT-x veya AMD-V) etkin olmal\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Kuruluma ba\u015flamak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<h4>1. WSL 2 Kurulumu ve Etkinle\u015ftirilmesi<\/h4>\n<p>Linux konteynerlerini Windows \u00fczerinde sorunsuz \u00e7al\u0131\u015ft\u0131rman\u0131n anahtar\u0131 WSL 2&#8217;dir. PowerShell&#8217;i y\u00f6netici olarak a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\ndism.exe \/online \/enable-feature \/featurename:VirtualMachinePlatform \/all \/norestart\ndism.exe \/online \/enable-feature \/featurename:Microsoft-Windows-Subsystem-Linux \/all \/norestart\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar, gerekli Windows \u00f6zelliklerini etkinle\u015ftirecektir. Ard\u0131ndan bilgisayar\u0131n\u0131z\u0131 yeniden ba\u015flat\u0131n. Yeniden ba\u015flatman\u0131n ard\u0131ndan, WSL 2'yi varsay\u0131lan s\u00fcr\u00fcm olarak ayarlay\u0131n:<\/p>\n<pre><code>\nwsl --set-default-version 2\n    <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer bir Linux da\u011f\u0131t\u0131m\u0131n\u0131z y\u00fckl\u00fc de\u011filse, Microsoft Store'dan Ubuntu, Debian gibi bir da\u011f\u0131t\u0131m y\u00fckleyebilirsiniz. Kurulum tamamland\u0131\u011f\u0131nda, WSL 2 art\u0131k Linux konteynerleriniz i\u00e7in haz\u0131r olacakt\u0131r.<\/p>\n<h4>2. Docker Desktop Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Docker Desktop, Windows \u00fczerinde Docker'\u0131 kullanmak i\u00e7in en kolay ve en kapsaml\u0131 \u00e7\u00f6z\u00fcmd\u00fcr. Hem Windows hem de Linux konteynerlerini tek bir aray\u00fczden y\u00f6netmenizi sa\u011flar.<\/p>\n<ol>\n<li><strong>\u0130ndirme:<\/strong> <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\" target=\"_blank\">Docker Desktop resmi web sitesinden<\/a> y\u00fckleyiciyi indirin.<\/li>\n<li><strong>Kurulum:<\/strong> \u0130ndirilen <code>.exe<\/code> dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. Kurulum s\u0131ras\u0131nda \"Enable WSL 2 features\" se\u00e7ene\u011finin i\u015faretli oldu\u011fundan emin olun.<\/li>\n<li><strong>\u0130lk \u00c7al\u0131\u015ft\u0131rma:<\/strong> Kurulum tamamland\u0131ktan sonra Docker Desktop otomatik olarak ba\u015flayacakt\u0131r. Sistem tepsisindeki Docker simgesinin ye\u015fil olmas\u0131, Docker'\u0131n ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir.<\/li>\n<li><strong>WSL 2 Entegrasyonunu Kontrol Etme:<\/strong> Docker Desktop ayarlar\u0131na gidin (sistem tepsisindeki Docker simgesine sa\u011f t\u0131klay\u0131p \"Settings\" se\u00e7ene\u011fini se\u00e7in). \"Resources\" alt\u0131nda \"WSL Integration\" sekmesine t\u0131klay\u0131n. Burada, y\u00fckl\u00fc Linux da\u011f\u0131t\u0131mlar\u0131n\u0131z\u0131n listesini g\u00f6receksiniz. Docker'\u0131 hangi da\u011f\u0131t\u0131mlarla kullanmak istedi\u011finizi se\u00e7in. Genellikle, Docker Desktop otomatik olarak bunu yapar, ancak kontrol etmek iyi bir uygulamad\u0131r.<\/li>\n<\/ol>\n<p>Bu ad\u0131mlarla, Windows bilgisayar\u0131n\u0131z hem Windows hem de Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rmaya haz\u0131r hale gelmi\u015f olacakt\u0131r. Docker Desktop'\u0131n kolay aray\u00fcz\u00fc sayesinde, konteynerlerinizi ba\u015flatmak, durdurmak ve y\u00f6netmek olduk\u00e7a basittir. Dolay\u0131s\u0131yla, farkl\u0131 i\u015fletim sistemlerine \u00f6zg\u00fc uygulamalar\u0131n\u0131z\u0131 tek bir \u00e7at\u0131 alt\u0131nda, verimli bir \u015fekilde y\u00f6netebileceksiniz. Art\u0131k hem Windows tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 .NET, IIS ile, hem de Linux tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 Node.js, Python, Java gibi teknolojilerle sorunsuz bir \u015fekilde konteynerler i\u00e7inde \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<h2>Windows Konteynerleri ile Uygulama Geli\u015ftirme ve Da\u011f\u0131t\u0131m: Bir \u00d6rnek<\/h2>\n<p>Windows ortam\u0131nda konteyner teknolojisinin g\u00fcc\u00fcn\u00fc anlamak i\u00e7in, bir Windows uygulamas\u0131n\u0131 nas\u0131l konteynerize edebilece\u011fimize dair pratik bir \u00f6rnek \u00fczerinden ilerleyelim. Bu b\u00f6l\u00fcmde, basit bir .NET Core web uygulamas\u0131n\u0131 bir Windows konteynerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Bu, \u00f6zellikle .NET Framework tabanl\u0131 eski uygulamalar veya Windows Server \u00f6zelliklerine ba\u011f\u0131ml\u0131 yaz\u0131l\u0131mlar i\u00e7in \u00f6nemlidir.<\/p>\n<h3>Basit Bir .NET Web Uygulamas\u0131n\u0131 Konteynerize Etme<\/h3>\n<p>\u00d6ncelikle, konteynerize edece\u011fimiz basit bir .NET Core web uygulamas\u0131na ihtiyac\u0131m\u0131z var. E\u011fer hali haz\u0131rda bir uygulaman\u0131z yoksa, h\u0131zl\u0131ca bir tane olu\u015fturabiliriz. Komut istemcisini (Command Prompt veya PowerShell) a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nmkdir MyWindowsWebApp\ncd MyWindowsWebApp\ndotnet new webapp\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar, <code>MyWindowsWebApp<\/code> ad\u0131nda yeni bir dizin olu\u015fturacak ve i\u00e7ine temel bir .NET Core web uygulamas\u0131 \u015fablonu yerle\u015ftirecektir. Uygulaman\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 test etmek i\u00e7in <code>dotnet run<\/code> komutunu kullanabilirsiniz. Uygulaman\u0131z haz\u0131r oldu\u011funda, onu bir Docker imaj\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in bir <code>Dockerfile<\/code> olu\u015fturmam\u0131z gerekecek.<\/p>\n<h4>Dockerfile Olu\u015fturma<\/h4>\n<p><code>MyWindowsWebApp<\/code> dizininin k\u00f6k\u00fcne <code>Dockerfile<\/code> ad\u0131nda bir dosya olu\u015fturun (uzant\u0131s\u0131 olmadan) ve i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin:<\/p>\n<pre><code>\n# .NET SDK imaj\u0131n\u0131 kullanarak uygulamay\u0131 derle\nFROM mcr.microsoft.com\/dotnet\/sdk:6.0 AS build\nWORKDIR \/src\nCOPY [\"MyWindowsWebApp.csproj\", \".\/\"]\nRUN dotnet restore\nCOPY . .\nRUN dotnet build -c Release -o \/app\/build\n\n# .NET ASP.NET Runtime imaj\u0131n\u0131 kullanarak uygulamay\u0131 \u00e7al\u0131\u015ft\u0131r\nFROM mcr.microsoft.com\/dotnet\/aspnet:6.0 AS final\nWORKDIR \/app\nCOPY --from=build \/app\/build .\nEXPOSE 80\nENTRYPOINT [\"dotnet\", \"MyWindowsWebApp.dll\"]\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu <code>Dockerfile<\/code>, \u00e7ok a\u015famal\u0131 bir derleme s\u00fcrecini tan\u0131mlar:<\/p>\n<ul>\n<li>\u0130lk a\u015fama (<code>build<\/code>), .NET SDK imaj\u0131n\u0131 kullanarak uygulaman\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 geri y\u00fckler ve uygulamay\u0131 derler.<\/li>\n<li>\u0130kinci a\u015fama (<code>final<\/code>), derlenmi\u015f uygulamay\u0131 daha k\u00fc\u00e7\u00fck ve daha g\u00fcvenli olan ASP.NET Runtime imaj\u0131na kopyalar.<\/li>\n<li><code>EXPOSE 80<\/code>, konteynerin 80 numaral\u0131 porttan d\u0131\u015far\u0131ya hizmet verece\u011fini belirtir.<\/li>\n<li><code>ENTRYPOINT<\/code>, konteyner ba\u015flad\u0131\u011f\u0131nda \u00e7al\u0131\u015facak komutu tan\u0131mlar.<\/li>\n<\/ul>\n<h4>Docker \u0130maj\u0131n\u0131 Olu\u015fturma ve Konteyneri \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>\u015eimdi, uygulaman\u0131z\u0131n oldu\u011fu dizinde (<code>MyWindowsWebApp<\/code>) komut istemcisini a\u00e7\u0131n ve a\u015fa\u011f\u0131daki Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\ndocker build -t my-windows-webapp .\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>Dockerfile<\/code>'\u0131 kullanarak <code>my-windows-webapp<\/code> ad\u0131nda bir Docker imaj\u0131 olu\u015fturacakt\u0131r. \u0130\u015flem biraz zaman alabilir, \u00e7\u00fcnk\u00fc temel imajlar\u0131n indirilmesi gerekecektir. \u0130maj ba\u015far\u0131yla olu\u015fturulduktan sonra, uygulamay\u0131 bir konteyner i\u00e7inde \u00e7al\u0131\u015ft\u0131rabiliriz:<\/p>\n<pre><code>\ndocker run -d -p 8080:80 --name my-windows-container my-windows-webapp\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li><code>-d<\/code>: Konteyneri arka planda (detached mode) \u00e7al\u0131\u015ft\u0131r\u0131r.<\/li>\n<li><code>-p 8080:80<\/code>: Konteynerin 80 numaral\u0131 portunu ana bilgisayar\u0131n 8080 numaral\u0131 portuna e\u015fler. B\u00f6ylece uygulaman\u0131za <code>http:\/\/localhost:8080<\/code> adresinden eri\u015febilirsiniz.<\/li>\n<li><code>--name my-windows-container<\/code>: Konteynere okunabilir bir isim verir.<\/li>\n<li><code>my-windows-webapp<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak imaj\u0131n ad\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Konteyner ba\u015flad\u0131ktan sonra, web taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131p <code>http:\/\/localhost:8080<\/code> adresine giderek uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. Art\u0131k .NET uygulaman\u0131z izole bir Windows konteyneri i\u00e7inde \u00e7al\u0131\u015f\u0131yor!<\/p>\n<h4>Ger\u00e7ek D\u00fcnya Senaryosu: Bir IIS Uygulamas\u0131n\u0131 Konteynerize Etme<\/h4>\n<p>Diyelim ki eski bir ASP.NET Web Forms uygulamas\u0131 var ve bu uygulama IIS (Internet Information Services) gerektiriyor. Windows konteynerleri burada devreye girer. IIS'i i\u00e7eren bir Windows Server Core imaj\u0131n\u0131 temel alarak uygulaman\u0131z\u0131 kolayca konteynerize edebilirsiniz:<\/p>\n<pre><code>\n# IIS ve .NET Framework'u i\u00e7eren Windows Server Core imaj\u0131n\u0131 kullan\nFROM mcr.microsoft.com\/windows\/servercore\/iis:windowsservercore-ltsc2019\n\n# Uygulama dosyalar\u0131n\u0131 konteynere kopyala\nCOPY .\/MyApp\/ \/inetpub\/wwwroot\/MyApp\/\n\n# IIS'i yap\u0131land\u0131r (\u00f6rne\u011fin, uygulaman\u0131z\u0131n bir uygulama havuzuna ihtiyac\u0131 varsa)\nRUN powershell -NoProfile -Command \\\n    Import-Module WebAdministration; \\\n    New-WebApplication -Name 'MyApp' -PhysicalPath 'C:\\inetpub\\wwwroot\\MyApp' -ApplicationPool 'DefaultAppPool'\n\n# Portu a\u00e7\nEXPOSE 80\n\n# IIS'i \u00e7al\u0131\u015f\u0131r durumda tut\nCMD [\"powershell\", \"-NoProfile\", \"-Command\", \"Invoke-Expression -Command {C:\/ServiceMonitor.exe w3svc}\"]\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>mcr.microsoft.com\/windows\/servercore\/iis:windowsservercore-ltsc2019<\/code> gibi bir imaj\u0131 temel alarak IIS'li bir ortam haz\u0131rl\u0131yoruz. Uygulama dosyalar\u0131n\u0131z\u0131 kopyal\u0131yor ve IIS \u00fczerinde bir web uygulamas\u0131 olarak yap\u0131land\u0131r\u0131yoruz. Bu sayede, IIS ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olan karma\u015f\u0131k Windows uygulamalar\u0131n\u0131 bile modern konteyner teknolojileriyle da\u011f\u0131tabilirsiniz. Bu yetenek, \u00f6zellikle mevcut Windows tabanl\u0131 sistemleri modernize etmek isteyen kurumsal yap\u0131lar i\u00e7in paha bi\u00e7ilmez bir avantaj sunmaktad\u0131r.<\/p>\n<h2>Windows \u00dczerinde Linux Konteynerleri ile \u00c7al\u0131\u015fma: WSL 2'nin G\u00fcc\u00fc<\/h2>\n<p>Windows \u00fczerinde Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rmak, \u00f6zellikle WSL 2 entegrasyonu sayesinde, art\u0131k son derece kolay ve verimlidir. Bu b\u00f6l\u00fcm, bir Linux tabanl\u0131 web uygulamas\u0131n\u0131 bir Docker konteynerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131n\u0131z\u0131 ve WSL 2'nin bu s\u00fcre\u00e7teki kritik rol\u00fcn\u00fc detayland\u0131racakt\u0131r. Bu yetenek, geli\u015ftiricilere Windows \u00fczerinde Linux geli\u015ftirme ortamlar\u0131na tam eri\u015fim sa\u011flayarak \u00e7ok daha geni\u015f bir ekosisteme kap\u0131 aralar.<\/p>\n<h3>WSL 2'nin \u00d6nemi ve Avantajlar\u0131 Nelerdir?<\/h3>\n<p>WSL 2 (Windows Subsystem for Linux 2), Windows 10\/11 \u00fczerinde tam, yerel bir Linux \u00e7ekirde\u011fi \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131yan devrim niteli\u011finde bir \u00f6zelliktir. WSL 1'den farkl\u0131 olarak, WSL 2 tam bir sanalla\u015ft\u0131rma teknolojisi kullan\u0131r, ancak geleneksel sanal makinelerden \u00e7ok daha hafiftir ve h\u0131zl\u0131d\u0131r. Docker Desktop, Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rmak i\u00e7in do\u011frudan WSL 2 sanal makinesi i\u00e7indeki Linux \u00e7ekirde\u011fini kullan\u0131r. Bu entegrasyonun ba\u015fl\u0131ca avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Y\u00fcksek Performans:<\/strong> WSL 2, disk G\/\u00c7 performans\u0131 ve sistem \u00e7a\u011fr\u0131lar\u0131 a\u00e7\u0131s\u0131ndan WSL 1'den \u00e7ok daha h\u0131zl\u0131d\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck kod tabanlar\u0131 ve konteyner i\u015flemleri i\u00e7in b\u00fcy\u00fck bir fark yarat\u0131r.<\/li>\n<li><strong>Tam Sistem Uyumlulu\u011fu:<\/strong> WSL 2 ile, Docker gibi Linux \u00e7ekirde\u011fine do\u011frudan ba\u011f\u0131ml\u0131 olan ara\u00e7lar\u0131 sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/li>\n<li><strong>Kusursuz Entegrasyon:<\/strong> Docker Desktop, WSL 2 ile o kadar iyi entegre olmu\u015ftur ki, Linux konteynerlerinizi Windows'tan sanki yerel olarak \u00e7al\u0131\u015f\u0131yormu\u015f gibi hissedersiniz.<\/li>\n<li><strong>Kaynak Verimlili\u011fi:<\/strong> WSL 2, Hyper-V'den daha az kaynak t\u00fcketir ve dinamik bellek tahsisi gibi \u00f6zelliklerle daha verimli \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n<h3>Basit Bir Node.js Web Uygulamas\u0131n\u0131 Konteynerize Etme<\/h3>\n<p>\u015eimdi, basit bir Node.js web uygulamas\u0131n\u0131 bir Linux konteynerinde nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131za bakal\u0131m. Bu uygulama, kullan\u0131c\u0131ya \"Merhaba D\u00fcnya!\" mesaj\u0131 veren temel bir HTTP sunucusu olacakt\u0131r.<\/p>\n<p>\u00d6ncelikle, uygulaman\u0131z i\u00e7in bir dizin olu\u015fturun ve i\u00e7ine <code>app.js<\/code> ad\u0131nda bir dosya olu\u015fturup a\u015fa\u011f\u0131daki kodu ekleyin:<\/p>\n<pre><code>\n\/\/ app.js\nconst http = require('http');\n\nconst hostname = '0.0.0.0'; \/\/ Konteyner i\u00e7inde dinlemek i\u00e7in 0.0.0.0 kullan\u0131n\nconst port = 3000;\n\nconst server = http.createServer((req, res) => {\n  res.statusCode = 200;\n  res.setHeader('Content-Type', 'text\/plain');\n  res.end('Merhaba Dunya! Bu bir Linux konteyneri.\\n');\n});\n\nserver.listen(port, hostname, () => {\n  console.log(<code>Server ${hostname}:${port} adresinde calisiyor<\/code>);\n});\n    <\/pre>\n<p><\/code><\/p>\n<p>Ayn\u0131 dizin i\u00e7inde, bu uygulamay\u0131 bir Docker imaj\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in <code>Dockerfile<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code>\n# Node.js imaj\u0131n\u0131 temel al\nFROM node:16-alpine\n\n# Uygulama dizinini ayarla\nWORKDIR \/app\n\n# Paket ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kopyala ve kur (e\u011fer package.json olsayd\u0131)\n# COPY package*.json .\/\n# RUN npm install\n\n# Uygulama kodunu kopyala\nCOPY app.js .\n\n# Portu a\u00e7\nEXPOSE 3000\n\n# Uygulamay\u0131 ba\u015flat\nCMD [\"node\", \"app.js\"]\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu <code>Dockerfile<\/code> \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li><code>node:16-alpine<\/code> imaj\u0131n\u0131 temel al\u0131r. Alpine, \u00e7ok k\u00fc\u00e7\u00fck boyutlu bir Linux da\u011f\u0131t\u0131m\u0131d\u0131r ve konteyner imajlar\u0131n\u0131 k\u00fc\u00e7\u00fck tutmak i\u00e7in idealdir.<\/li>\n<li>Uygulama kodunu (<code>app.js<\/code>) konteyner i\u00e7indeki <code>\/app<\/code> dizinine kopyalar.<\/li>\n<li>Konteynerin 3000 numaral\u0131 porttan d\u0131\u015far\u0131ya hizmet verece\u011fini belirtir.<\/li>\n<li><code>node app.js<\/code> komutu ile Node.js uygulamas\u0131n\u0131 ba\u015flat\u0131r.<\/li>\n<\/ul>\n<h4>Docker \u0130maj\u0131n\u0131 Olu\u015fturma ve Konteyneri \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Uygulaman\u0131z\u0131n ve <code>Dockerfile<\/code>'\u0131n\u0131z\u0131n bulundu\u011fu dizinde komut istemcisini a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\ndocker build -t my-linux-webapp .\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>my-linux-webapp<\/code> ad\u0131nda bir Docker imaj\u0131 olu\u015fturacakt\u0131r. \u0130maj ba\u015far\u0131yla olu\u015fturulduktan sonra, uygulamay\u0131 bir konteyner i\u00e7inde \u00e7al\u0131\u015ft\u0131rabiliriz:<\/p>\n<pre><code>\ndocker run -d -p 4000:3000 --name my-linux-container my-linux-webapp\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut \u015funlar\u0131 yapar:<\/p>\n<ul>\n<li><code>-d<\/code>: Konteyneri arka planda \u00e7al\u0131\u015ft\u0131r\u0131r.<\/li>\n<li><code>-p 4000:3000<\/code>: Konteynerin 3000 numaral\u0131 portunu ana bilgisayar\u0131n 4000 numaral\u0131 portuna e\u015fler. B\u00f6ylece uygulaman\u0131za <code>http:\/\/localhost:4000<\/code> adresinden eri\u015febilirsiniz.<\/li>\n<li><code>--name my-linux-container<\/code>: Konteynere okunabilir bir isim verir.<\/li>\n<li><code>my-linux-webapp<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak imaj\u0131n ad\u0131d\u0131r.<\/li>\n<\/ul>\n<p>Taray\u0131c\u0131n\u0131z\u0131 a\u00e7\u0131p <code>http:\/\/localhost:4000<\/code> adresine giderek Node.js uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. \u0130\u015fte bu kadar! Windows bilgisayar\u0131n\u0131zda bir Linux konteyneri ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131rd\u0131n\u0131z. Docker Desktop, WSL 2 entegrasyonu sayesinde bu s\u00fcreci sizin i\u00e7in \u015feffaf bir \u015fekilde y\u00f6netir, b\u00f6ylece Linux konteynerlerinin performansl\u0131 ve stabil bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Vaka Analizi: Karma Ortamda Bir E-ticaret Uygulamas\u0131<\/h3>\n<p>\u015eimdi, hem Windows hem de Linux konteynerlerinin g\u00fcc\u00fcn\u00fc birle\u015ftiren daha karma\u015f\u0131k bir senaryoya bakal\u0131m: modern bir e-ticaret uygulamas\u0131. Bu uygulama, farkl\u0131 teknolojileri kullanan mikroservislerden olu\u015fuyor:<\/p>\n<ul>\n<li><strong>Arka U\u00e7 (API):<\/strong> .NET Core ile yaz\u0131lm\u0131\u015f, Windows konteynerinde \u00e7al\u0131\u015fan bir sipari\u015f y\u00f6netimi API'si.<\/li>\n<li><strong>\u00d6n U\u00e7 (UI):<\/strong> React.js ile yaz\u0131lm\u0131\u015f, Nginx \u00fczerinde servis edilen, Linux konteynerinde \u00e7al\u0131\u015fan bir kullan\u0131c\u0131 aray\u00fcz\u00fc.<\/li>\n<li><strong>Veritaban\u0131:<\/strong> Linux konteynerinde \u00e7al\u0131\u015fan bir PostgreSQL sunucusu.<\/li>\n<li><strong>\u00d6deme Ge\u00e7idi Servisi:<\/strong> Python ile yaz\u0131lm\u0131\u015f, Linux konteynerinde \u00e7al\u0131\u015fan ayr\u0131 bir mikroservis.<\/li>\n<\/ul>\n<p>Bu mimaride, t\u00fcm bu bile\u015fenler Windows i\u015fletim sistemi \u00fczerinde Docker Desktop ve WSL 2 entegrasyonu sayesinde birlikte \u00e7al\u0131\u015fabilir. Docker Compose kullanarak bu farkl\u0131 konteynerleri tek bir komutla aya\u011fa kald\u0131rabiliriz:<\/p>\n<pre><code>\n# docker-compose.yml \u00f6rne\u011fi\nversion: '3.8'\n\nservices:\n  # Windows Konteyneri: .NET Core API\n  order-api:\n    image: my-dotnet-order-api:latest # Daha \u00f6nce olu\u015fturdu\u011funuz .NET API imaj\u0131\n    ports:\n      - \"5000:80\"\n    environment:\n      - ASPNETCORE_ENVIRONMENT=Production\n      - DatabaseSettings:ConnectionString=Host=postgres;Port=5432;Database=ecomdb;Username=user;Password=password\n    # platform: windows\/amd64 # E\u011fer spesifik olarak belirtmek isterseniz\n\n  # Linux Konteyneri: React \u00d6n U\u00e7 ve Nginx\n  frontend:\n    image: my-react-frontend:latest # Daha \u00f6nce olu\u015fturdu\u011funuz React Nginx imaj\u0131\n    ports:\n      - \"80:80\"\n    depends_on:\n      - order-api # order-api servisi aya\u011fa kalkmadan ba\u015flamaz\n    # platform: linux\/amd64 # E\u011fer spesifik olarak belirtmek isterseniz\n\n  # Linux Konteyneri: PostgreSQL Veritaban\u0131\n  postgres:\n    image: postgres:13\n    environment:\n      POSTGRES_DB: ecomdb\n      POSTGRES_USER: user\n      POSTGRES_PASSWORD: password\n    volumes:\n      - pgdata:\/var\/lib\/postgresql\/data\n    ports:\n      - \"5432:5432\"\n\n  # Linux Konteyneri: Python \u00d6deme Servisi\n  payment-service:\n    image: my-python-payment-service:latest # Daha \u00f6nce olu\u015fturdu\u011funuz Python servis imaj\u0131\n    ports:\n      - \"5001:5001\"\n    environment:\n      - API_KEY=YOUR_API_KEY\n    depends_on:\n      - order-api\n\nvolumes:\n  pgdata:\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu <code>docker-compose.yml<\/code> dosyas\u0131 ile:<\/p>\n<ol>\n<li><code>order-api<\/code> servisi bir Windows konteynerinde \u00e7al\u0131\u015f\u0131r ve 5000 numaral\u0131 porttan eri\u015filebilir.<\/li>\n<li><code>frontend<\/code> servisi bir Linux konteynerinde Nginx \u00fczerinde React uygulamas\u0131n\u0131 bar\u0131nd\u0131r\u0131r ve 80 numaral\u0131 porttan eri\u015filebilir.<\/li>\n<li><code>postgres<\/code> servisi bir Linux konteynerinde \u00e7al\u0131\u015f\u0131r ve e-ticaret uygulamas\u0131n\u0131n t\u00fcm verilerini saklar.<\/li>\n<li><code>payment-service<\/code> de bir Linux konteynerinde \u00e7al\u0131\u015f\u0131r ve \u00f6deme i\u015flemlerini y\u00f6netir.<\/li>\n<\/ol>\n<p>T\u00fcm bu farkl\u0131 konteynerler, tek bir <code>docker compose up<\/code> komutuyla Windows ana bilgisayar\u0131n\u0131zda ayn\u0131 anda ba\u015flat\u0131labilir ve birbirleriyle ileti\u015fime ge\u00e7ebilirler. Docker Desktop, arkada WSL 2'yi kullanarak Linux konteynerlerini optimize edilmi\u015f bir sanal makinede \u00e7al\u0131\u015ft\u0131r\u0131rken, Windows konteynerlerini do\u011frudan Windows konteyner izolasyonu ile y\u00f6netir. Bu, geli\u015ftirme, test ve hatta k\u00fc\u00e7\u00fck \u00fcretim ortamlar\u0131 i\u00e7in muazzam bir esneklik ve verimlilik sa\u011flar. Sonu\u00e7 olarak, karma\u015f\u0131k ve \u00e7ok teknolojili uygulamalar\u0131 tek bir Windows makinesi \u00fczerinde tutarl\u0131 ve y\u00f6netilebilir bir \u015fekilde da\u011f\u0131tabilirsiniz.<\/p>\n<h2>Konteyner Y\u00f6netiminde \u0130leri Seviye \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Konteynerlerin temelini ve Windows \u00fczerinde hem Linux hem de Windows konteynerlerini \u00e7al\u0131\u015ft\u0131rmay\u0131 \u00f6\u011frendik. \u015eimdi, konteyner y\u00f6netim becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131yacak baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131na ve en iyi uygulamalara g\u00f6z atal\u0131m. Bu ipu\u00e7lar\u0131, performans\u0131n\u0131z\u0131 art\u0131rman\u0131za, g\u00fcvenli\u011fi sa\u011flaman\u0131za ve daha verimli bir i\u015f ak\u0131\u015f\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>1. Konteyner Veri Kal\u0131c\u0131l\u0131\u011f\u0131: Volume'lar<\/h3>\n<p>Konteynerler do\u011falar\u0131 gere\u011fi ge\u00e7icidir; yani bir konteyner silindi\u011finde i\u00e7indeki t\u00fcm veriler de kaybolur. Uygulamalar\u0131n\u0131z\u0131n kal\u0131c\u0131 verilere (veritabanlar\u0131, kullan\u0131c\u0131 y\u00fcklemeleri vb.) ihtiyac\u0131 oldu\u011funda Volume'lar devreye girer. Docker Volume'lar\u0131, ana bilgisayar dosya sisteminde veya a\u011f depolamada saklanan verilerin konteynerler taraf\u0131ndan kullan\u0131lmas\u0131na olanak tan\u0131r. Bu sayede, konteynerler silinse bile verileriniz g\u00fcvende kal\u0131r.<\/p>\n<pre><code>\n# Named Volume olu\u015fturma\ndocker volume create mydata\n\n# Konteyneri volume ile \u00e7al\u0131\u015ft\u0131rma\ndocker run -d -p 5432:5432 --name my-postgres \\\n  -v mydata:\/var\/lib\/postgresql\/data \\\n  postgres:13\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>mydata<\/code> ad\u0131nda bir volume olu\u015fturulur ve PostgreSQL konteynerinin veri dizinine (<code>\/var\/lib\/postgresql\/data<\/code>) ba\u011flan\u0131r. Bu sayede, PostgreSQL konteyneri silinse bile veritaban\u0131 verileri <code>mydata<\/code> volume'unda kal\u0131c\u0131 olarak saklan\u0131r ve yeni bir konteyner ba\u015flat\u0131ld\u0131\u011f\u0131nda bu verilere tekrar eri\u015filebilir.<\/p>\n<h3>2. Konteyner A\u011f Yap\u0131land\u0131rmas\u0131 ve \u0130leti\u015fim<\/h3>\n<p>Konteynerler aras\u0131nda veya konteynerler ile d\u0131\u015f d\u00fcnya aras\u0131nda nas\u0131l ileti\u015fim kuruldu\u011funu anlamak \u00f6nemlidir. Docker, varsay\u0131lan olarak birka\u00e7 a\u011f s\u00fcr\u00fcc\u00fcs\u00fc sa\u011flar:<\/p>\n<ul>\n<li><strong>Bridge (K\u00f6pr\u00fc) A\u011f\u0131:<\/strong> Konteynerler i\u00e7in varsay\u0131lan a\u011fd\u0131r. Bu a\u011f \u00fczerindeki konteynerler, birbirleriyle isimleriyle ileti\u015fim kurabilirler (Docker Compose ile). D\u0131\u015f d\u00fcnyaya \u00e7\u0131kmak i\u00e7in NAT kullan\u0131l\u0131r.<\/li>\n<li><strong>Host A\u011f\u0131:<\/strong> Konteyner, ana bilgisayar\u0131n a\u011f y\u0131\u011f\u0131n\u0131n\u0131 do\u011frudan kullan\u0131r. Bu, konteynerin ana bilgisayar\u0131n portlar\u0131na do\u011frudan eri\u015febilece\u011fi anlam\u0131na gelir. Genellikle performans gerektiren veya karma\u015f\u0131k a\u011f yap\u0131land\u0131rmalar\u0131na sahip uygulamalar i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Overlay A\u011f\u0131:<\/strong> Birden fazla Docker ana bilgisayar\u0131 aras\u0131nda konteynerlerin ileti\u015fim kurmas\u0131n\u0131 sa\u011flar. Swarm ve Kubernetes gibi k\u00fcmeleme \u00e7\u00f6z\u00fcmlerinde kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>Docker Compose kullan\u0131rken, servis isimleri otomatik olarak bir DNS \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc sa\u011flar, b\u00f6ylece bir konteyner di\u011ferine ismiyle eri\u015febilir (\u00f6rne\u011fin, <code>order-api<\/code> konteyneri, <code>postgres<\/code> konteynerine <code>postgres:5432<\/code> \u00fczerinden ba\u011flanabilir). Ayr\u0131ca, port e\u015flemeleri (<code>-p<\/code> veya <code>ports:<\/code>) ile ana bilgisayar \u00fczerinden konteynerlere eri\u015fim sa\u011flayabilirsiniz.<\/p>\n<h3>3. Dockerfile Optimizasyon \u0130pu\u00e7lar\u0131<\/h3>\n<p>Verimli ve k\u00fc\u00e7\u00fck boyutlu imajlar olu\u015fturmak i\u00e7in <code>Dockerfile<\/code>'\u0131n\u0131z\u0131 optimize etmek kritik \u00f6neme sahiptir:<\/p>\n<ul>\n<li><strong>\u00c7ok A\u015famal\u0131 Derleme (Multi-stage Builds):<\/strong> \u00d6nceki .NET \u00f6rne\u011finde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, bu y\u00f6ntem nihai imaj\u0131n boyutunu \u00f6nemli \u00f6l\u00e7\u00fcde k\u00fc\u00e7\u00fclt\u00fcr. Derleme ara\u00e7lar\u0131 ve ge\u00e7ici dosyalar, yaln\u0131zca derleme a\u015famas\u0131nda kal\u0131r.<\/li>\n<li><strong>Do\u011fru Temel \u0130maj Se\u00e7imi:<\/strong> \u0130htiya\u00e7lar\u0131n\u0131z i\u00e7in en k\u00fc\u00e7\u00fck temel imaj\u0131 (\u00f6rne\u011fin, Alpine Linux veya Nano Server) se\u00e7in.<\/li>\n<li><strong>Katman \u00d6nbellekleme:<\/strong> <code>Dockerfile<\/code>'daki komutlar\u0131 de\u011fi\u015fme olas\u0131l\u0131\u011f\u0131 en az olandan en \u00e7ok olana do\u011fru s\u0131ralay\u0131n (\u00f6rne\u011fin, ba\u011f\u0131ml\u0131l\u0131k kurulumu kod kopyalamadan \u00f6nce). Docker, her katman\u0131 \u00f6nbelle\u011fe al\u0131r, bu da daha h\u0131zl\u0131 derlemeler sa\u011flar.<\/li>\n<li><strong><code>.dockerignore<\/code> Kullan\u0131m\u0131:<\/strong> Kaynak kodunuzdaki gereksiz dosyalar\u0131n (\u00f6rne\u011fin, <code>node_modules<\/code>, <code>.git<\/code> dizinleri) imaja kopyalanmas\u0131n\u0131 engellemek i\u00e7in <code>.dockerignore<\/code> dosyas\u0131 kullan\u0131n. Bu, imaj boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve derleme s\u00fcresini h\u0131zland\u0131r\u0131r.<\/li>\n<\/ul>\n<h3>4. G\u00fcvenlik Konular\u0131<\/h3>\n<p>Konteyner g\u00fcvenli\u011fi, g\u00f6z ard\u0131 edilmemesi gereken bir aland\u0131r:<\/p>\n<ul>\n<li><strong>K\u00fc\u00e7\u00fck Temel \u0130majlar:<\/strong> Daha az yaz\u0131l\u0131m ve ba\u011f\u0131ml\u0131l\u0131k, daha az potansiyel g\u00fcvenlik a\u00e7\u0131\u011f\u0131 demektir.<\/li>\n<li><strong>D\u00fc\u015f\u00fck Yetkili Kullan\u0131c\u0131lar:<\/strong> Konteynerlerinizi <code>root<\/code> kullan\u0131c\u0131s\u0131 olarak \u00e7al\u0131\u015ft\u0131rmaktan ka\u00e7\u0131n\u0131n. <code>Dockerfile<\/code> i\u00e7inde \u00f6zel bir kullan\u0131c\u0131 olu\u015fturun ve uygulamay\u0131 bu kullan\u0131c\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131n:\n<pre><code>\nRUN adduser -D appuser\nUSER appuser\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>G\u00fcvenlik Taramalar\u0131:<\/strong> Docker Hub gibi platformlar veya \u00fc\u00e7\u00fcnc\u00fc taraf ara\u00e7lar (\u00f6rne\u011fin, Trivy, Snyk) arac\u0131l\u0131\u011f\u0131yla imajlar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 d\u00fczenli olarak taray\u0131n.<\/li>\n<li><strong>Gizli Bilgilerin Y\u00f6netimi:<\/strong> API anahtarlar\u0131, veritaban\u0131 \u015fifreleri gibi hassas bilgileri do\u011frudan <code>Dockerfile<\/code> i\u00e7ine veya imaja yazmaktan ka\u00e7\u0131n\u0131n. Docker Secrets veya ortam de\u011fi\u015fkenleri (ancak \u00fcretimde dikkatli olun) kullan\u0131n.<\/li>\n<\/ul>\n<h3>5. CI\/CD Entegrasyonu \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h3>\n<p>Konteynerler, S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m (CI\/CD) s\u00fcre\u00e7leriyle m\u00fckemmel bir uyum i\u00e7indedir. CI\/CD i\u015flem hatt\u0131n\u0131zda Docker'\u0131 kullanarak:<\/p>\n<ul>\n<li>Her kod de\u011fi\u015fikli\u011finde otomatik olarak Docker imajlar\u0131 olu\u015fturun ve test edin.<\/li>\n<li>Derlenmi\u015f imajlar\u0131 bir konteyner kay\u0131t defterine (Docker Hub, Azure Container Registry, AWS ECR vb.) g\u00f6nderin.<\/li>\n<li>Testler ba\u015far\u0131l\u0131 oldu\u011funda, yeni imajlar\u0131 otomatik olarak da\u011f\u0131t\u0131m ortamlar\u0131na (Kubernetes, Docker Swarm vb.) \u00e7ekin.<\/li>\n<\/ul>\n<p>Bu ileri d\u00fczey teknikler ve en iyi uygulamalar, Windows \u00fczerinde konteyner tabanl\u0131 uygulamalar\u0131n\u0131z\u0131 daha sa\u011flam, g\u00fcvenli ve verimli hale getirmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n, konteynerle\u015fme bir \u00f6\u011frenme s\u00fcrecidir ve s\u00fcrekli olarak yeni ara\u00e7lar ve yakla\u015f\u0131mlar ortaya \u00e7\u0131kmaktad\u0131r.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Konteyner performans\u0131n\u0131 izlemek i\u00e7in Docker Desktop'\u0131n yerle\u015fik ara\u00e7lar\u0131n\u0131 veya Portainer gibi \u00fc\u00e7\u00fcnc\u00fc taraf g\u00f6rsel y\u00f6netim aray\u00fczlerini kullanabilirsiniz. CPU, bellek ve a\u011f kullan\u0131m\u0131n\u0131 takip etmek, darbo\u011fazlar\u0131 tespit etmenize yard\u0131mc\u0131 olur.\n    <\/div>\n<h2>Sonu\u00e7: Windows ve Konteynerlerin G\u00fc\u00e7l\u00fc Gelece\u011fi<\/h2>\n<p>Bu makale boyunca, Windows i\u015fletim sistemi \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rman\u0131n inceliklerini detayl\u0131ca ele ald\u0131k. Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde konteynerlerin neden vazge\u00e7ilmez bir ara\u00e7 haline geldi\u011fini, Docker ve WSL 2 entegrasyonunun bu hibrit ortam\u0131 nas\u0131l m\u00fcmk\u00fcn k\u0131ld\u0131\u011f\u0131n\u0131 ve uygulamal\u0131 \u00f6rneklerle nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, Windows \u00fczerinde bir .NET uygulamas\u0131n\u0131 bir Windows konteynerinde veya bir Node.js uygulamas\u0131n\u0131 bir Linux konteynerinde \u00e7al\u0131\u015ft\u0131rmak, Docker Desktop sayesinde art\u0131k olduk\u00e7a basit ve verimli. Karma e-ticaret uygulamas\u0131 vaka analizi, farkl\u0131 i\u015fletim sistemi gereksinimleri olan mikroservislerin tek bir Windows ana bilgisayarda nas\u0131l bir arada ve uyum i\u00e7inde \u00e7al\u0131\u015fabilece\u011fine dair somut bir \u00f6rnek sundu. Ayr\u0131ca, konteyner y\u00f6netiminde ileri d\u00fczey ipu\u00e7lar\u0131, veri kal\u0131c\u0131l\u0131\u011f\u0131, a\u011f yap\u0131land\u0131rmas\u0131, Dockerfile optimizasyonu, g\u00fcvenlik ve CI\/CD entegrasyonu gibi kritik konulara de\u011finerek, konteyner becerilerinizi bir ad\u0131m \u00f6teye ta\u015f\u0131yacak bilgiler edindiniz. Windows'un s\u00fcrekli geli\u015fen konteyner yetenekleri, geli\u015ftiricilere ve DevOps m\u00fchendislerine benzersiz bir esneklik ve g\u00fc\u00e7 sunmaktad\u0131r. Gerek mevcut Windows tabanl\u0131 sistemleri modernize etmek, gerekse farkl\u0131 teknolojilere sahip yeni nesil uygulamalar\u0131 geli\u015ftirmek olsun, Windows \u00fczerinde konteyner kullan\u0131m\u0131 i\u015fletmeler i\u00e7in b\u00fcy\u00fck avantajlar sa\u011flamaktad\u0131r. Gelecekte, konteyner orkestrasyon ara\u00e7lar\u0131 (Kubernetes gibi) ile bu hibrit yakla\u015f\u0131mlar\u0131n daha da derinle\u015fti\u011fini ve karma\u015f\u0131k da\u011f\u0131t\u0131m senaryolar\u0131n\u0131n basitle\u015fti\u011fini g\u00f6rece\u011fiz. Bu g\u00fc\u00e7l\u00fc teknolojiyi benimseyerek, geli\u015ftirme s\u00fcre\u00e7lerinizi h\u0131zland\u0131rabilir, uygulama da\u011f\u0131t\u0131m\u0131n\u0131z\u0131 standartla\u015ft\u0131rabilir ve daha sa\u011flam, \u00f6l\u00e7eklenebilir sistemler in\u015fa edebilirsiniz. Unutmay\u0131n, konteynerler sadece bir ara\u00e7 de\u011fil, ayn\u0131 zamanda yaz\u0131l\u0131m ya\u015fam d\u00f6ng\u00fcs\u00fcne yeni bir bak\u0131\u015f a\u00e7\u0131s\u0131 getiren bir felsefedir. Bu entegrasyon, \u00f6zellikle \u00e7ok disiplinli veya \u00e7e\u015fitli teknoloji y\u0131\u011f\u0131nlar\u0131na sahip ekipler i\u00e7in i\u015f ak\u0131\u015flar\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde basitle\u015ftirme potansiyeli ta\u015f\u0131r.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<dl>\n<dt><strong>Windows Home S\u00fcr\u00fcm\u00fcnde Docker ve Linux Konteynerleri \u00c7al\u0131\u015ft\u0131rabilir miyim?<\/strong><\/dt>\n<dd>Evet, Windows 10 Home (s\u00fcr\u00fcm 2004 veya \u00fcst\u00fc) veya Windows 11 Home s\u00fcr\u00fcmlerinde WSL 2 ve Docker Desktop sayesinde Linux konteynerlerini \u00e7al\u0131\u015ft\u0131rabilirsiniz. Windows konteynerleri i\u00e7in ise Hyper-V gereklili\u011fi nedeniyle Windows Pro, Enterprise veya Education s\u00fcr\u00fcmlerine ihtiyac\u0131n\u0131z vard\u0131r.<\/dd>\n<dt><strong>Docker Desktop \u00fccretli mi?<\/strong><\/dt>\n<dd>Docker Desktop, k\u00fc\u00e7\u00fck ekipler, ki\u015fisel kullan\u0131m ve e\u011fitim ama\u00e7l\u0131 kullan\u0131m i\u00e7in \u00fccretsizdir. B\u00fcy\u00fck i\u015fletmeler ve kurumsal kullan\u0131mlar i\u00e7in belirli kullan\u0131m \u015fartlar\u0131na g\u00f6re \u00fccretli abonelik gerektirebilir. G\u00fcncel lisanslama detaylar\u0131 i\u00e7in Docker'\u0131n resmi web sitesini kontrol etmeniz \u00f6nerilir.<\/dd>\n<dt><strong>Windows Konteynerleri mi, Linux Konteynerleri mi Daha Verimli?<\/strong><\/dt>\n<dd>Verimlilik, genellikle uygulaman\u0131z\u0131n gereksinimlerine ve kullanmak istedi\u011finiz i\u015fletim sistemi ekosistemine ba\u011fl\u0131d\u0131r. Genel olarak, Linux konteynerleri (\u00f6zellikle Alpine gibi minimal imajlarla) genellikle daha k\u00fc\u00e7\u00fck boyutta ve daha az kaynak t\u00fcketirler. Ancak Windows konteynerleri de modern Windows Server Core veya Nano Server imajlar\u0131 ile olduk\u00e7a optimize edilebilir. Se\u00e7im, uygulaman\u0131z\u0131n teknolojisine (\u00f6rne\u011fin .NET Framework vs. Node.js) ve ba\u011f\u0131ml\u0131l\u0131klar\u0131na g\u00f6re yap\u0131lmal\u0131d\u0131r.<\/dd>\n<dt><strong>Konteynerler Sanal Makinelerin Yerine Ge\u00e7ebilir mi?<\/strong><\/dt>\n<dd>Konteynerler ve sanal makineler farkl\u0131 ama\u00e7lara hizmet eden tamamlay\u0131c\u0131 teknolojilerdir. Konteynerler, uygulama d\u00fczeyinde izolasyon sa\u011flarken \u00e7ok hafif ve h\u0131zl\u0131d\u0131r. Sanal makineler ise tam bir i\u015fletim sistemi izolasyonu sa\u011flayarak daha y\u00fcksek d\u00fczeyde g\u00fcvenlik ve uyumluluk sunar. Konteynerler bir\u00e7ok uygulama da\u011f\u0131t\u0131m senaryosunda sanal makinelerin yerini alabilirken, baz\u0131 durumlarda (\u00f6rne\u011fin, farkl\u0131 i\u015fletim sistemi \u00e7ekirdekleri \u00e7al\u0131\u015ft\u0131rmak veya donan\u0131m sanalla\u015ft\u0131rmas\u0131na ihtiya\u00e7 duymak) sanal makinelere hala ihtiya\u00e7 duyulur. Windows \u00fczerinde WSL 2, bu iki d\u00fcnyan\u0131n en iyi y\u00f6nlerini birle\u015ftirerek Linux konteynerlerini sanal makine performans\u0131 ve konteyner hafifli\u011fiyle \u00e7al\u0131\u015ft\u0131rmay\u0131 m\u00fcmk\u00fcn k\u0131lar.<\/dd>\n<dt><strong>Docker Compose yerine Kubernetes kullanmal\u0131 m\u0131y\u0131m?<\/strong><\/dt>\n<dd>Docker Compose, tek bir ana bilgisayar \u00fczerinde \u00e7oklu konteynerli uygulamalar\u0131 tan\u0131mlamak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in harikad\u0131r. Geli\u015ftirme ve test ortamlar\u0131 i\u00e7in idealdir. Kubernetes ise, konteynerli uygulamalar\u0131 birden fazla sunucuda (k\u00fcmede) \u00f6l\u00e7eklendirmek, y\u00f6netmek ve y\u00fcksek kullan\u0131labilirlik sa\u011flamak i\u00e7in tasarlanm\u0131\u015f bir orkestrasyon platformudur. B\u00fcy\u00fck, da\u011f\u0131t\u0131lm\u0131\u015f ve \u00fcretim ortamlar\u0131 i\u00e7in Kubernetes daha uygundur. E\u011fer uygulaman\u0131z\u0131n karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131yorsa ve \u00f6l\u00e7eklenebilirlik, otomatik iyile\u015fme gibi \u00f6zelliklere ihtiyac\u0131n\u0131z varsa Kubernetes'e ge\u00e7i\u015f yapmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<\/dd>\n<\/dl>\n<style>\n        \/* Temel Responsive Tasar\u0131m \u0130\u00e7in \u00d6rnek Medya Sorgular\u0131 *\/\n        body {\n            font-family: Arial, sans-serif;\n            line-height: 1.6;\n            margin: 0 auto;\n            max-width: 960px;\n            padding: 20px;\n            color: #333;\n        }\n        h2, h3 {\n            color: #2c3e50;\n            margin-top: 30px;\n            margin-bottom: 15px;\n        }\n        p {\n            margin-bottom: 1em;\n            text-align: justify;\n        }\n        ul, ol, dl {\n            margin-bottom: 1em;\n            padding-left: 20px;\n        }\n        li {\n            margin-bottom: 0.5em;\n        }\n        pre {\n            background-color: #f4f4f4;\n            border: 1px solid #ddd;\n            border-left: 3px solid #f36d33;\n            color: #666;\n            page-break-inside: avoid;\n            font-family: monospace;\n            font-size: 15px;\n            line-height: 1.6;\n            margin-bottom: 1.6em;\n            max-width: 100%;\n            overflow: auto;\n            padding: 1em 1.5em;\n            display: block;\n            word-wrap: break-word;\n        }\n        code {\n            font-family: monospace;\n            background-color: #eee;\n            padding: 2px 4px;\n            border-radius: 3px;\n        }\n        .expert-tip {\n            background-color: #e6f7ff;\n            border-left: 5px solid #007bff;\n            padding: 15px;\n            margin: 20px 0;\n            border-radius: 5px;\n            font-style: italic;\n            color: #0056b3;\n        }\n        a {\n            color: #007bff;\n            text-decoration: none;\n        }\n        a:hover {\n            text-decoration: underline;\n        }<\/p>\n<p>        \/* Mobil Cihazlar \u0130\u00e7in Medya Sorgusu *\/\n        @media only screen and (max-width: 768px) {\n            body {\n                padding: 15px;\n            }\n            h2 {\n                font-size: 1.8em;\n            }\n            h3 {\n                font-size: 1.4em;\n            }\n            pre {\n                font-size: 14px;\n                padding: 0.8em 1em;\n            }\n        }<\/p>\n<p>        \/* Daha K\u00fc\u00e7\u00fck Cihazlar \u0130\u00e7in Medya Sorgusu *\/\n        @media only screen and (max-width: 480px) {\n            body {\n                padding: 10px;\n            }\n            h2 {\n                font-size: 1.5em;\n            }\n            h3 {\n                font-size: 1.2em;\n            }\n            ul, ol, dl {\n                padding-left: 15px;\n            }\n        }\n    <\/style>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-31407","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Windows&#039;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker<\/title>\n<meta name=\"description\" content=\"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Windows&#039;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker\" \/>\n<meta property=\"og:description\" content=\"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-09T13:01:56+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"27 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Windows&#8217;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker\",\"datePublished\":\"2025-10-09T13:01:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\"},\"wordCount\":4822,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\",\"name\":\"Windows'ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-09T13:01:56+00:00\",\"description\":\"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Windows&#8217;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Windows'ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker","description":"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/","og_locale":"tr_TR","og_type":"article","og_title":"Windows'ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker","og_description":"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.","og_url":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-09T13:01:56+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"27 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Windows&#8217;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker","datePublished":"2025-10-09T13:01:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/"},"wordCount":4822,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/","url":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/","name":"Windows'ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-09T13:01:56+00:00","description":"Windows \u00fczerinde hem Linux hem de Windows konteynerlerini bir arada \u00e7al\u0131\u015ft\u0131rmak m\u0131 istiyorsunuz? Bu rehberde Docker ve WSL 2 ile konteyner y\u00f6netiminin t\u00fcm detaylar\u0131n\u0131 ke\u015ffedin.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/windowsta-konteyner-yonetimi-linux-ve-windows-konteynerleri-ve-docker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Windows&#8217;ta Konteyner Y\u00f6netimi: Linux ve Windows Konteynerleri ve Docker"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31407","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31407"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31407\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}