Yazılım Geliştirme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Yazılım Geliştirme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

12 Temmuz 2026 Pazar

Generative AI in Coding: Copilot vs ChatGPT - Teknik Bir Karşılaştırma

12 Temmuz 2026 itibarıyla, Generative AI teknolojisi yazılım geliştirme sektörünü önemli ölçüde etkilemeye devam ediyor. Bu bağlamda, Copilot ve ChatGPT gibi araçlar geliştiricilerin iş süreçlerini hızlandırması açısından büyük bir ilgi görüyor. Bu makalede, bu iki popüler AI destekli kodlama aracı arasındaki teknik farklılıkları ve kullanım senaryolarını inceleyeceğiz.

Copilot ve ChatGPT Arasındaki Farklar

Copilot, temel olarak bir yanıltma tabanlı kodlama aracı olarak tasarlandı. GitHub ve OpenAI iş birliği ile geliştirilen Copilot, geliştiricilere kod yazarken öneriler sunarak zaman kazandırıyor. Bu öneriler, büyük miktarda kod verisi üzerinden eğitilen derin öğrenme modelleri tarafından oluşturuluyor.

ChatGPT ise, daha geniş bir uygulama yelpazesine sahip bir sohbet odaklı AI modeli. Kodlama konularında da hỗre edebilen ChatGPT, doğal dil işleme yetenekleri sayesinde geliştiricilere kod açıklamaları, hata ayıklama ve kod optimizasyonu konularında da destek sağlayabiliyor.

Performans ve Kullanım Senaryoları

Copilot, özellikle kurumsal çevrelerde ve büyük ölçekli projelerde daha etkili olabiliyor. Bu, kısmen güvenlik ve uyumluluk konularındaki优势lerine bağlı. Diğer yandan, ChatGPT, bağımsız geliştiriciler ve çapraz platform geliştirme projelerinde daha çok tercih ediliyor. ChatGPT'nin esnekliği ve genel amaçlı doğası, çeşitli programlama dilleri ve geliştirme ortamları ile çalışabilmesini sağlıyor.

Sonuç olarak, Copilot ve ChatGPT her ikisi de yazılım geliştirme süreçlerini hızlandırmaya yönelik güçlü araçlar. Ancak, seçim ultimately proje gereksinimleri, geliştirici tercihleri ve kurumsal politikalar gibi faktörlere bağlı olarak değişiyor. Her iki aracın da teknik avantajları ve potansiyel sınırlamaları hakkında derin bir anlayış, efektif bir şekilde AI destekli kodlama araçlarını kullanmak için kritik öneme sahip.

8 Temmuz 2026 Çarşamba

Generative AI in Coding: Copilot vs ChatGPT - Bir Karşılaştırma

8 Temmuz 2026 itibariyle, Generative AI teknolojisi yazılım geliştirme süreçlerini önemli ölçüde değiştirmeye devam ediyor. Bu bağlamda, Copilot ve ChatGPT gibi araçlar, geliştiricilere kod yazma ve hata giderme konusunda önemli ölçüde destek sağlıyor. Bu makalede, bu iki aracı teknik açıdan karşılaştırarak, hangi durumlarda hangisinin daha efektif olabileceğini inceleyeceğiz.

Copilot, temel olarak bir yanıltma tabanlı kod öneri aracı olarak çalışır. Geliştiricinin yazdığı kodu analiz ederek, olası hataları öngörerek ve öneriler sunarak, kod kalitesini ve verimliliği artırma hedefi taşır. ChatGPT ise, daha geniş bir yelpazede, doğal dil işleme yetenekleri ile kod yazma, hata giderme ve hatta kod açıklamaları yazma gibi görevlerde destek sağlar.

Özellikler ve Karşılaştırma

Copilot ile ChatGPT arasındaki temel fark, öneri ve destek mekanizmalarının farklı olmasıdır. Copilot, geliştiricinin yazmakta olduğu kodun bağlamına göre öneriler sunar, bu da özellikle büyük ve kompleks projelerde zaman kazandırabilir. Öte yandan, ChatGPT, daha esnek bir yaklaşım sunarak, kodla ilgili her türlü soruyu cevaplayabilir ve hatta kod yazma konusunda rehberlik edebilir.

Performans ve Güvenlik

Her iki araçta da güvenlik ön planda tutulmuştur. Copilot ve ChatGPT, geliştiricilerin kodlarını analiz ederken, gizlilik ve veri koruma ilkelerine uygun hareket ederler. Ancak, ChatGPT nin daha geniş bir doğal dil işleme yeteneğine sahip olması, bazı durumlarda daha fazla güvenlik riski taşıyabileceği anlamına gelebilir.

Sonuç olarak, Copilot ve ChatGPT her ikisi de Generative AI teknolojisini kullanarak, yazılım geliştirme süreçlerini iyileştirmeyi hedefler. Hangi aracın kullanılacağı, geliştiricinin specific ihtiyaçlarına ve projeninComplexitesine bağlı olarak değişebilir. Copilot, özellikle kod önerileri ve hata giderme konusunda uzmanlaşmışken, ChatGPT daha geniş bir yelpazede destek sunar.

2 Temmuz 2026 Perşembe

Generative AI in Coding: Copilot vs ChatGPT - Bir Karşılaştırma

2 Temmuz 2026 itibarıyla, Generative AI teknolojisindeki gelişmeler, yazılım geliştirme süreçlerini önemli ölçüde değiştirmeye devam ediyor. Copilot ve ChatGPT gibi araçlar, geliştiricilere kodlama süreçlerinde yardımcı olmak için ortaya çıktı. Bu rehberde, bu iki aracı teknik açıdan karşılaştırarak, hangi durumlarda hangisinin daha uygun olduğunu analiz edeceğiz.

Copilot ve ChatGPT: Temel Özellikler

Copilot, esasen bir yanıltma tabanlı kodlama aracı olarak tasarlandı. Kullanıcıların kod yazarken öneriler sunar ve kod tamamlama işlemlerini hızlandırır. ChatGPT ise, daha geniş bir yelpazede doğal dil işleme kabiliyetine sahip bir sohbet robotu. Kodlama konularında da rehberlik edebilse de, daha çok genel bilgi ve destek için kullanılır.

Karşılaştırma

Karşılaştırmada, Copilot daha spesifik ve kod odaklı bir yaklaşım sunarken, ChatGPT daha genel ve konuşma tabanlı bir deneyim sağlar. Copilot, özellikle kod tamamlama ve hataları bulma gibi görevlerde üstündür. Öte yandan, ChatGPT, kodlama konularında rehberlik ve genel programlama soruları için daha uygun olabilir.

Önemli bir nokta, her iki aracın da öğrenme eğrisi ve adaptasyon yeteneğidir. Kullanıcılar, bu araçları daha etkili bir şekilde kullanmak için zamanla kendilerini adapte etmelidir. Ayrıca, güvenlik ve veri koruma konularında da dikkatli olunmalıdır, çünkü bu araçlar kullanıcı verilerini işler.

Sonuç

Sonuç olarak, Copilot ve ChatGPT her ikisi de değerli araçlar ancak farklı kullanım durumları için uygundurlar. Copilot, kodlama sürecini hızlandırmak ve kod kalitesini artırmak için idealdir. ChatGPT ise, genel rehberlik ve destek için daha uygundur. Bir geliştirici, bu araçları birlikte kullanarak, kodlama verimliliğini ve genel performansını önemli ölçüde artırabilir.

11 Haziran 2026 Perşembe

Generative AI in Coding: Copilot vs ChatGPT - Teknik bir Karşılaştırma

11 Haziran 2026 itibarıyla, Generative AI teknolojisindeki gelişmeler, yazılım geliştirme süreçlerini önemli ölçüde değiştirmeye devam ediyor. Bu bağlamda, Copilot ve ChatGPT gibi araçlar, geliştiricilerin iş yükünü azaltmak ve kod kalitesini artırmak için tasarlandı.

Copilot ve ChatGPT Arasındaki Farklar

Copilot, esas olarak kode tamamlama ve öneri özellikleri sunan bir AI destekli kodlama aracıdır. Geliştiricilerin yazım sürecini hızlandırmaya yardımcı olurken, aynı zamanda kod hatalarını azaltma konusunda da destek sağlar. Öte yandan, ChatGPT, daha geniş bir yelpazede doğal dil işleme yeteneklerine sahip bir sohbet botu olarak işlev görür. Kodlama konularında yardım sunmanın yanı sıra, proje planlama, algoritma açıklamaları ve hata ayıklama gibi daha komplex görevlerde de destek verebilir.

Kullanım Senaryoları

Copilot, özellikle geliştirme sürecinin hızlandırılması ve kod kalitesinin iyileştirilmesi gereken projelerde tercih edilebilir. ChatGPT ise, proje başlangıç aşamalarında veya karmaşık sorunların çözümünde daha etkili olabilir. Her iki araç da, yazılım geliştirme ekibinin verimliliğini artırmak için tasarlanmış olsa da, uygulama alanları ve kullanım senaryoları farklılık gösterebilir.

Sonuç olarak, Copilot ve ChatGPT arasındaki seçim, proje gereksinimleri ve geliştirme ekibinin ihtiyaçlarına bağlı olarak değişebilir. Her iki araç da, Generative AI teknolojisindeki gelişmelerin yazılım geliştirme süreçlerine nasıl entegre edilebileceğine dair önemli örnekler sunar.

16 Mayıs 2026 Cumartesi

Generative AI in Coding: Copilot vs ChatGPT - Bir Karşılaştırma

Yazılım geliştirme dünyasında, Generative AI teknolojileri giderek daha önemli bir rol oynamaktadır. Bu teknolojilerin arasında Copilot ve ChatGPT gibi araçlar, geliştiricilerin işlerini kolaylaştırmak ve hızlandırmak için tasarlanmışlardır. Bu makalede, bu iki aracı karşılaştırarak, yazılım geliştirme sürecinde nasıl kullanılabileceklerini ve birbirlerinden nasıl ayrıldıklarını inceleyeceğiz.

Copilot ve ChatGPT Nedir?

Copilot, Microsoft tarafından geliştirilen bir yazılım geliştirme aracıdır. Bu araç, geliştiricilere kodlama过程inde yardımcı olmak için tasarlanmıştır. Copilot, geliştiricilerin yazdığı kodu analiz ederek, öneriler sunar ve hataları düzeltmeye yardımcı olur.

ChatGPT ise, OpenAI tarafından geliştirilen bir sohbet robotudur. Bu araç, kullanıcıların sorularını cevaplamak ve onlara yardımcı olmak için tasarlanmıştır. ChatGPT, doğal dil işleme yetenekleri sayesinde, kullanıcıların sorularını anlamakta ve onlara uygun cevaplar sunmaktadır.

Karşılaştırma

Copilot ve ChatGPT arasındaki en önemli fark, amaçlarıdır. Copilot, geliştiricilere kodlama过程inde yardımcı olmak için tasarlanmıştır, जबकi ChatGPT, kullanıcıların sorularını cevaplamak ve onlara yardımcı olmak için tasarlanmıştır.

Copilot, yazılım geliştirme sürecinde daha fazla kullanılmaktadır, çünkü geliştiricilere kodlama过程inde yardımcı olmak için tasarlanmıştır. ChatGPT ise, daha geniş bir alanda kullanılmaktadır, çünkü kullanıcıların sorularını cevaplamak ve onlara yardımcı olmak için tasarlanmıştır.

Copilot ve ChatGPT arasındaki bir diğer fark, öneri sistemidir. Copilot, geliştiricilere kodlama过程inde öneriler sunar, enquanto ChatGPT, kullanıcıların sorularını cevaplamak için öneriler sunar.

Sonuç

Copilot ve ChatGPT gibi araçlar, yazılım geliştirme sürecinde önemli bir rol oynamaktadır. Bu araçlar, geliştiricilere kodlama过程inde yardımcı olmak ve hızlandırmak için tasarlanmışlardır. Copilot ve ChatGPT arasındaki karşılaştırma, bu araçların amaçları ve öneri sistemi gibi farklılıklarını göstermiştir.

15 Nisan 2026 Çarşamba

Generative AI in Coding: Copilot vs ChatGPT - Bir Karşılaştırma ve Teknik İnceleme

Generative AI, yazılım geliştirme sürecini devrimleştiriyor ve geliştiricilerin verimliliğini artırma konusunda önemli bir rol oynuyor. Bu alanda iki popüler araç, GitHub Copilot ve ChatGPT, geliştiricilere otomatik kodlama ve kode önerileri sunuyor. Bu makalede, bu iki aracı teknik olarak karşılaştıracağız ve hangisinin yazılım geliştirme sürecine daha fazla katkı sağladığını inceleyeceğiz.

GitHub Copilot

GitHub Copilot, AI tabanlı bir kodlama asistanıdır. Geliştiricilerin yazım alışkanlıklarını öğrenerek, kode önerileri sunar ve hataları önler. Copilot, Python, Java ve JavaScript gibi birçok programlama dilini destekler.

ChatGPT

ChatGPT, bir sohbet AI aracıdır. Geliştiricilere kodlama konusunda yardım eder ve kode önerileri sunar. ChatGPT, Copilot gibi spesifik bir yazılım geliştirme aracı değildir, ancak genel bir AI aracı olarak yazılım geliştirme sürecine katkı sağlayabilir.

Karşılaştırma

Copilot ve ChatGPT arasındaki ana fark, spesifiklik ve genellik konusunda yatıyor. Copilot, yazılım geliştirme sürecine spesifik olarak odaklanırken, ChatGPT genel bir AI aracı olarak yazılım geliştirme sürecine katkı sağlayabilir. Ayrıca, Copilot kode önerileri sunarken, ChatGPT genel yardım ve bilgi sunar.

Sonuç olarak, GitHub Copilot ve ChatGPT her ikisi de yazılım geliştirme sürecine katkı sağlayabilir. Ancak, Copilot spesifik bir yazılım geliştirme aracı olarak kode önerileri sunarken, ChatGPT genel bir AI aracı olarak yazılım geliştirme sürecine yardım eder.

6 Nisan 2026 Pazartesi

Generative AI in Coding: Copilot vs ChatGPT - Bir Kodlama Devrimi

6 Nisan 2026 itibarıyla, Generative AI teknolojileri kodlama dünyasını hızla değiştiriyor. Bu değişimde Copilot ve ChatGPT gibi araçlar önemli rol oynuyor. Bu makalede, bu iki araç arasındaki farklılıkları ve kodlama süreçlerine nasıl entegre edilebileceklerini inceleyeceğiz.

Generative AI ve Kodlama

Generative AI, doğal dil işleme ve makineler tarafından üretilen kodlama yeteneklerini bir araya getirerek, geliştiricilerin daha verimli ve hızlı çalışmasına olanak tanır. Copilot ve ChatGPT, bu teknolojinin öncüleri arasında yer alıyor.

Copilot

Copilot, bir AI tabanlı kodlama aracıdır. Geliştiricilerin yazdığı kodu analiz ederek, öneriler sunar ve hatta bazı durumlarda kodu otomatik olarak tamamlar. Copilot, özellikle Python, Java ve C# gibi dillerde etkili bir şekilde çalışır.

ChatGPT

ChatGPT, bir sohbet AI aracıdır. Kodlama konularında da uzmanlaşmıştır ve geliştiricilere kodlama sorularına cevaplar verebilir, hatta basit kod parçacıkları üretebilir. ChatGPT, doğal dil işleme yetenekleri sayesinde, geliştiricilerin kodlama sorunlarını daha kolay bir şekilde ifade etmelerine olanak tanır.

Karşılaştırma ve Entegrasyon

Copilot ve ChatGPT arasındaki temel fark, onların çalışma şekilleridir. Copilot, daha çok kodlama sürecine odaklanırken, ChatGPT daha geniş bir yelpazede, kodlama dahil olmak üzere birçok konuda uzmanlaşmıştır. Her iki aracı da kodlama süreçlerine entegre etmek, geliştiricilerin daha verimli ve hızlı çalışmasına olanak tanır.

AI tabanlı araçların kullanımı, kod kalitesini artırmaya ve hataları azaltmaya yardımcı olur. Ancak, bu araçların kullanımında dikkatli olunmalıdır. AI tarafından üretilen kodların, her zaman doğru ve güvenli olmadığı unutulmamalıdır.

Sonuç olarak, Generative AI teknolojileri, kodlama dünyasını değiştiriyor. Copilot ve ChatGPT gibi araçlar, geliştiricilerin daha verimli ve hızlı çalışmasına olanak tanır. Ancak, bu araçların kullanımında dikkatli olunmalıdır ve AI tarafından üretilen kodların her zaman doğru ve güvenli olduğundan emin olunmalıdır.

17 Mart 2026 Salı

Generative AI in Coding: Copilot vs ChatGPT - Teknik Bir Karşılaştırma

17 Mart 2026 itibarıyla, Generative AI teknolojileri yazılımda devrim yaratmaya devam ediyor. Copilot ve ChatGPT gibi araçlar, geliştiricilerin kod yazma süreçlerini hızlandırıyor ve verimliliklerini artırıyor.

Copilot, temel olarak bir kode öneri aracı olarak çalışır. Geliştiricilerin yazmakta oldukları kodu analiz ederek, öneriler sunar ve hataları azaltmaya yardımcı olur. ChatGPT ise, daha geniş bir yapay zeka tabanlı sohbet aracı olarak, geliştiricilerin kodla ilgili sorularını cevaplayabiliyor ve kod parçacıkları üretebiliyor.

Özellikler ve Karşılaştırma

Copilot ve ChatGPT arasında önemli farklılıklar vardır. Copilot, özellikle kod tamamlama ve hata azaltma konularında uzmanlaşmıştır. ChatGPT ise, daha çok genel amaçlı bir sohbet aracı olarak, kod yazma sürecinin yanı sıra, proje planlama ve tasarım gibi konularda da destek sunabiliyor.

Teknik Avantajlar ve Dezavantajlar

Copilot ve ChatGPT gibi Generative AI araçlarının kullanımı, geliştirme süresini kısaltma ve verimliliği artırma gibi önemli avantajlar sunuyor. Ancak, bu araçların güvenlik ve etkinlik konularında dikkatli bir şekilde kullanılması gerekiyor. Örneğin, ürettiği kodların dikkatli bir şekilde incelemesi ve test edilmesi gerekiyor.

Sonuç olarak, Copilot ve ChatGPT gibi Generative AI araçları, yazılımda önemli bir rol oynamaya devam edecek. Bu araçların teknik avantaj ve dezavantajları hakkında bilgi sahibi olmak, geliştiricilerin en etkili şekilde kullanmalarına yardımcı olacak.

1 Mart 2026 Pazar

Generative AI in Coding: Copilot vs ChatGPT - Bir Karşılaştırma ve Teknik İnceleme

Generative AI, yazılım geliştirme dünyasında devrim yaratmaya devam ediyor. Copilot ve ChatGPT gibi araçlar, geliştiricilerin kod yazma süreçlerini hızlandırıyor ve verimliliği artırıyor. Ancak, bu iki araç arasındaki farklar ve benzerlikler nelerdir? Bu makalede, Copilot ve ChatGPT'yi teknik bir bakış açısıyla karşılaştıracağız ve hangisinin hangi durumlarda daha uygun olduğunu inceleyeceğiz.

Copilot ve ChatGPT: Temel Özellikler

Copilot, GitHub tarafından geliştirilen bir yapay zeka tabanlı kodlama aracıdır. Copilot, geliştiricilerin kod yazarken öneriler sunar ve kod tamamlama işlemlerini hızlandırır. ChatGPT ise, OpenAI tarafından geliştirilen bir sohbet odaklı yapay zeka modelidir. ChatGPT, geliştiricilere kod yazma konusunda yardımcı olmak için tasarlanmış bir araçtır.

Copilot'ın Teknik Avantajları

Copilot, geliştiricilerin kod yazma süreçlerini hızlandırması bakımından önemli bir avantaja sahiptir. Copilot, kodlamayı kolaylaştıran ve hataları azaltan bir dizi özellik sunar. Örneğin, Copilot, kod tamamlama, kod önerisi ve hata düzeltme gibi işlemleri otomatik olarak gerçekleştirir. Ayrıca, Copilot, geliştiricilerin kodlarını daha temiz ve düzenli tutmalarına yardımcı olur.

ChatGPT'nin Teknik Avantajları

ChatGPT ise, geliştiricilere daha geniş bir yelpazede yardımcı olur. ChatGPT, kod yazma konusunda yardımcı olmakla kalmaz, aynı zamanda geliştiricilere kodlarının neden ve nasıl çalıştığını açıklar. ChatGPT, geliştiricilerin kodlarını anlamalarına ve geliştirmelerine yardımcı olur. Ayrıca, ChatGPT, geliştiricilere kodlama konusunda eğitim ve rehberlik sunar.

Karşılaştırma ve Sonuç

Copilot ve ChatGPT her ikisi de geliştiricilere önemli avantajlar sunar. Ancak, Copilot daha çok kod yazma sürecini hızlandırmaya odaklanırken, ChatGPT daha çok kod anlaşılırlığı ve eğitimine odaklanır. Hangisinin daha uygun olduğu, geliştiricilerin ihtiyaçlarına bağlıdır. Eğer geliştiriciler kod yazma süreçlerini hızlandırmak isterlerse, Copilot daha uygun olabilir. Ancak, eğer geliştiriciler kodlarını anlamak ve geliştirmek isterlerse, ChatGPT daha uygun olabilir.

15 Şubat 2026 Pazar

DevSecOps Pipelines ile Jenkins ve GitLab Entegrasyonu: Güvenlik ve Verimlilik için Kapsamlı Bir Rehber

15 Şubat 2026 itibarıyla, modern yazılım geliştirme süreçlerinde DevSecOps kavramı giderek daha önemli hale geliyor. Bu yaklaşım, güvenlik ve geliştirme ekiplerini bir araya getirerek, güvenlik ve kalite standartlarını tüm yazılım yaşam döngüsü boyunca entegre etmeyi amaçlıyor. Bu makalede, Jenkins ve GitLab gibi popüler araçları kullanarak DevSecOps Pipelines oluşturmanın teknik ayrıntılarına ve avantajlarına bakacağız.

Jenkins ve GitLab Entegrasyonu

Jenkins, sürekli entegrasyon ve teslimat için geniş bir kullanıcı kitlesine sahip bir otomasyon sunucusudur. GitLab ise, versiyon kontrolü, proje yönetimi ve CI/CD özellikleri sunan bir platformdur. Bu iki aracı entegre etmek, geliştiricilerin kod değişikliklerinden teslimata kadar olan tüm süreci otomatikleştirmesine ve izlemesine olanak tanır.

DevSecOps Pipelines Oluşturma

DevSecOps Pipelines oluştururken, güvenlik ve kalite kontrollerini her aşamada dahil etmek önemlidir. Aşağıdaki adımlar, bu süreci basitleştirmeye yardımcı olur:

  • Kod İnceleme: Geliştiricilerin kodlarını GitLab'a push ettiklerinde, Jenkins tarafından otomatik olarak kod analizi ve güvenlik taramaları yapılabilir.
  • Otomatik Test: Jenkins, birim testleri, entegrasyon testleri ve güvenlik testlerini çalıştırarak, kodun kalite ve güvenlik standartlarını karşıladığını doğrular.
  • CI/CD: Testlerin başarılı olması durumunda, Jenkins tarafından otomatik olarak derleme, paketcilik ve dağıtım işlemleri gerçekleştirilir.

Bu entegrasyon, geliştiricilerin güvenli ve kaliteli yazılımları daha hızlı bir şekilde teslim etmesine olanak tanır. Ayrıca, güvenlik ve kalite sorunlarının erken tespit edilmesini sağlar, böylece bu sorunların giderilmesi için harcanan zaman ve kaynak azaltılır.

Sonuç olarak, Jenkins ve GitLab kullanarak DevSecOps Pipelines oluşturmak, modern yazılım geliştirme süreçlerinde güvenlik, kalite ve verimlilik için kritik bir adımdır. Bu yaklaşım, geliştiricilerin güvenli ve kaliteli yazılımları daha hızlı bir şekilde teslim etmesine yardımcı olur ve güvenlik ve kalite standartlarını tüm yazılım yaşam döngüsü boyunca sağlar.

11 Şubat 2026 Çarşamba

Windows 11’de WSL2 ile Docker’sız Dev Ortamı: Podman ile Rootless Container Kurulumu ve İpuçları

Windows 11’de “Docker kurmadan container” mümkün mü?

Windows 11 üzerinde container tabanlı bir geliştirme ortamı kurmak isteyenlerin ilk aklına gelen seçenek çoğunlukla Docker Desktop oluyor. Ancak lisanslama, kaynak tüketimi ve arka planda çalışan servisler nedeniyle daha hafif ve kontrol edilebilir bir alternatif arıyorsanız, WSL2 + Podman (rootless) ikilisi oldukça güçlü bir çözüm sunuyor. Bu yazıda, Docker Desktop kurmadan Podman ile Linux container’larını WSL2 içinde nasıl çalıştıracağınızı ve günlük geliştirmede işinizi kolaylaştıracak pratik ayarları adım adım anlatıyorum.

Ön gereksinimler

Kuruluma başlamadan önce aşağıdakiler hazır olmalı: Windows 11, etkinleştirilmiş WSL2, bir Linux dağıtımı (ör. Ubuntu 22.04/24.04) ve Windows Terminal. WSL2 kurulu değilse PowerShell’i yönetici olarak açıp wsl --install komutunu çalıştırabilir, ardından sistemi yeniden başlatabilirsiniz. Zaten WSL kuruluysa sürümü doğrulamak için wsl -l -v komutu yeterlidir; dağıtımınızın VERSION sütununda 2 yazmalıdır.

1) WSL2 içinde Podman kurulumu

Ubuntu kullanıyorsanız Podman kurulumu oldukça düz: Terminalde WSL dağıtımınıza girin ve paketleri güncelleyin: sudo apt update. Ardından Podman’ı kurun: sudo apt install -y podman. Bu noktada Podman, Docker gibi daemon’a bağımlı olmadığı için daha sade bir mimariyle gelir. Yani arka planda sürekli çalışan bir servis zorunlu değildir; komutu verdiğinizde çalışır, işiniz bittiğinde kapanır.

2) Rootless (yetkisiz) container mantığı

Podman’ın en sevilen taraflarından biri rootless çalışmayı birinci sınıf desteklemesidir. Rootless, container’ları sistemde root yetkisi olmadan, kendi kullanıcı hesabınızla çalıştırmanız demektir. Bu, hem güvenlik açısından hem de “makinemi bozar mı?” kaygısını azaltma açısından ciddi avantaj sağlar. Rootless modda bazı ağ özellikleri veya port bağlama detayları farklılık gösterebilir; birazdan bunları pratik şekilde ele alacağız.

3) Podman ile ilk container’ı çalıştırma

Kurulumdan sonra hızlı bir test yapın. Örneğin Alpine imajını çekip bir komut çalıştırabilirsiniz: podman run --rm alpine:latest echo "Merhaba Podman". Her şey doğruysa Podman imajı indirecek ve çıktıyı göreceksiniz. Ardından mevcut imajları listelemek için podman images, çalışan container’ları görmek için podman ps komutları kullanılabilir.

4) Port yönlendirme ve web uygulaması örneği

Bir web uygulamasını ayağa kaldırmak için Nginx iyi bir örnektir. Aşağıdaki komut Nginx’i 8080 portuna bağlar: podman run --rm -p 8080:80 docker.io/library/nginx:alpine. Sonrasında Windows tarafında tarayıcıdan http://localhost:8080 adresine gittiğinizde Nginx karşılama sayfasını görmelisiniz. WSL2 ağ mimarisi çoğu durumda bunu sorunsuz taşır; ancak şirket VPN’i, güvenlik yazılımları veya özel firewall kuralları bazen localhost erişimini etkileyebilir. Bu durumda ilk kontrol edilecek yer Windows güvenlik duvarı ve WSL ağ ayarlarıdır.

5) Docker CLI alışkanlığını bırakmadan: podman-docker

Eğer yıllardır “docker run”, “docker compose” refleksiyle çalışıyorsanız Podman’a geçişi yumuşatmak için podman-docker paketi işinize yarar. Ubuntu’da çoğu sürümde şu şekilde yüklenebilir: sudo apt install -y podman-docker. Bu paket, “docker” komutunu Podman’a yönlendiren bir uyumluluk katmanı sağlar. Böylece birçok script ve dokümantasyon neredeyse değişmeden çalışır. Yine de üretim kalitesinde akışlarda komutları Podman’a göre netleştirmenizi öneririm.

6) Compose benzeri kullanım: Podman Compose veya Quadlet

Çoklu servis kurulumlarında Docker Compose benzeri bir deneyim için iki seçenek öne çıkıyor: podman-compose ve systemd tabanlı Quadlet. Basit senaryolarda sudo apt install -y podman-compose ile başlayabilirsiniz. Mevcut docker-compose.yml dosyalarınızın önemli bir kısmı çalışır; ancak network isimleri, volume izinleri ve bazı sürüme özel direktiflerde küçük uyarlamalar gerekebilir. Daha “kalıcı servis” yaklaşımı istiyorsanız Quadlet ile container’ları systemd birimleri gibi yönetmek, WSL içinde bile daha düzenli bir yapı sağlayabilir.

7) Volume, dosya izinleri ve performans notları

WSL2’de performansın kritik noktası genellikle dosya sistemi seçimidir. Proje dosyalarınızı WSL Linux dosya sistemi içinde (ör. /home/kullanici/proje) tutmak, Windows dosya sistemi altındaki /mnt/c yollarına göre çoğu zaman daha hızlıdır. Rootless container’larda volume bağlarken izin sorunları yaşarsanız, bağladığınız dizinlerin sahipliğini ve izinlerini kontrol edin. Özellikle Node.js gibi çok dosyalı projelerde, kaynak kodu Linux tarafında tutup editor olarak VS Code’un WSL eklentisini kullanmak hem stabil hem hızlı bir deneyim verir.

Sonuç: Hafif, güvenli ve kontrol edilebilir bir container deneyimi

WSL2 üzerinde Podman ile rootless container çalıştırmak, Windows 11’de modern geliştirme akışları için oldukça güncel ve ileri seviye bir alternatif sunuyor. Docker Desktop’a bağımlı kalmadan, daha az servisle daha fazla kontrol elde ediyorsunuz. Üstelik Podman’ın daemon’sız yaklaşımı ve rootless modeli, güvenlik ve kaynak kullanımı açısından da avantajlı. Eğer hedefiniz “Windows üzerinde Linux container geliştirme” ise bu kurulum, günlük iş akışınıza hızlıca entegre olabilecek pratik bir temel sağlar.

31 Ocak 2026 Cumartesi

Windows 11’de WSL2 ile Docker Desktop Olmadan Docker Kurulumu ve Performans Ayarları

Docker Desktop’sız bir Docker deneyimi mümkün mü?

Windows 11 üzerinde Docker kullanmanın en popüler yolu Docker Desktop kurmak. Ancak bazı kullanıcılar lisans koşulları, sistem kaynak tüketimi veya arka planda çalışan servisler nedeniyle daha hafif bir alternatif arıyor. İyi haber şu: WSL2 (Windows Subsystem for Linux) ile Docker Engine’i doğrudan Linux dağıtımı içinde kurup, Windows’ta da komut satırından rahatça kullanabilirsiniz. Bu yazıda, güncel bir yöntemle Docker Desktop olmadan kurulum, entegrasyon ve performans ayarlarını adım adım anlatıyorum.

Ön koşullar

Başlamadan önce şunlara ihtiyacınız var: Windows 11 (güncel), yönetici yetkisi, WSL2 ve bir Linux dağıtımı (Ubuntu 22.04/24.04 önerilir). Terminal kullanmayı bilmek kurulum süresini kısaltır. Bu yöntem, Docker konteynerlerini Linux çekirdeği üzerinde çalıştırdığı için hem uyumluluk hem de hız açısından genelde iyi sonuç verir.

1) WSL2 ve Ubuntu kurulumu (kısa yol)

Windows Terminal’i yönetici olarak açıp aşağıdaki komutu çalıştırın. Bu komut WSL’i etkinleştirir ve varsayılan olarak Ubuntu’yu kurar:

Komut: wsl --install

Kurulum bittiğinde bilgisayar yeniden başlatılabilir. Ardından Ubuntu ilk açılışta kullanıcı adı ve parola oluşturmanızı ister. WSL sürümünü kontrol etmek için:

wsl -l -v

Dağıtımınızın VERSION sütununda 2 yazmalıdır. Değilse şu komutla yükseltin:

wsl --set-version Ubuntu 2

2) Ubuntu içinde Docker Engine kurulumu

Ubuntu terminalinde önce sistem paketlerini güncelleyin:

sudo apt update && sudo apt upgrade -y

Ardından gerekli paketleri yükleyin:

sudo apt install -y ca-certificates curl gnupg

Docker’ın resmi deposunu eklemek için anahtar ve repo tanımını yapın (Ubuntu sürümüne uygun komutlar güncel yöntemdir):

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Şimdi Docker paketlerini kurun:

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3) WSL2’de Docker servisini başlatma (systemd ayarı)

Windows 11’in güncel sürümlerinde WSL içinde systemd desteği bulunuyor. Docker’ın her açılışta sorunsuz başlaması için bu ayarı aktif etmek iyi olur. Ubuntu’da şu dosyayı düzenleyin:

sudo nano /etc/wsl.conf

İçine şunları ekleyin:

[boot]
systemd=true

Ardından Windows tarafında WSL’i kapatıp tekrar açın:

wsl --shutdown

Ubuntu’yu tekrar açtıktan sonra Docker servis durumunu kontrol edin:

sudo systemctl status docker

4) “sudo”suz Docker kullanımı

Her komutta sudo yazmamak için kullanıcıyı docker grubuna ekleyin:

sudo usermod -aG docker $USER

Oturumu kapatıp açın ya da WSL’i yeniden başlatın. Sonrasında test:

docker run --rm hello-world

5) Windows Terminal’den pratik kullanım

Bu kurulumda Docker komutlarını Ubuntu içinde çalıştırırsınız. Windows Terminal’de Ubuntu sekmesi açıp docker ps gibi komutları kullanmak yeterli. Ayrıca proje klasörünüz Windows dosya sistemindeyse (ör. C:\projeler), WSL’den /mnt/c/projeler yoluyla erişebilirsiniz. Ancak performans için kritik bir öneri var: sık I/O yapan projelerde (Node.js, PHP, büyük bağımlılık klasörleri) kodu mümkünse WSL dosya sisteminde tutmak (ör. ~/projects) daha hızlı olur.

6) Performans ve kaynak ayarları (.wslconfig)

WSL2, varsayılan olarak RAM’i dinamik yönetir; bazı senaryolarda fazla RAM tüketebilir. Windows kullanıcı klasörünüzde (ör. C:\Users\KullaniciAdiniz) .wslconfig dosyası oluşturup kaynak sınırı koyabilirsiniz. Örnek:

[wsl2]
memory=6GB
processors=4
swap=2GB

Değişiklikten sonra wsl --shutdown ile WSL’i yeniden başlatın. Bu ayarlar özellikle aynı anda IDE, tarayıcı ve birkaç konteyner çalıştırırken sistemi daha öngörülebilir hale getirir.

7) Artılar, eksiler ve ne zaman tercih edilmeli?

Artılar: Daha hafif kurulum, daha az arka plan servisi, Docker Desktop bağımlılığı olmadan çalışma, Linux tabanlı daha “doğal” Docker deneyimi.

Eksiler: Bazı GUI özellikleri (entegre panel, otomatik güncelleyici) yoktur; port yönlendirme ve dosya sistemine erişimde dikkat gerekir. Yine de CLI odaklı geliştiriciler için bu yöntem günlük kullanımda gayet konforlu ve verimlidir.

Sonuç olarak, Windows 11 + WSL2 ikilisiyle Docker Desktop kurmadan da güncel ve hızlı bir konteyner çalışma ortamı kurabilirsiniz. Kurulum bir kez tamamlandıktan sonra günlük iş akışı büyük ölçüde “Linux’ta Docker kullanmak” kadar akıcı hale gelir.

28 Ocak 2026 Çarşamba

Docker ile Yerel LLM Çalıştırma: Ollama Kurulumu, Model Yönetimi ve API ile Entegrasyon

Yerelde yapay zekâ neden bu kadar popüler oldu?

Bulut tabanlı yapay zekâ servisleri hızlı ve pratik; ancak maliyet, gecikme, veri gizliliği ve entegrasyon esnekliği gibi başlıklarda her zaman ideal değiller. Özellikle hassas verilerle çalışan ekipler için yerelde (lokalde) çalışan büyük dil modelleri (LLM) ciddi bir avantaj sağlıyor. Son dönemde bu ihtiyacı en pratik şekilde karşılayan araçlardan biri de Ollama. Bu yazıda, Ollama’yı Docker ile kurup yerelde model çalıştırmayı, model yönetimini ve basit bir API kullanımını adım adım ele alıyorum.

Ollama nedir, ne işimize yarar?

Ollama, LLM’leri bilgisayarınızda çalıştırmayı kolaylaştıran bir çalışma zamanı ve model yönetim katmanı gibi düşünebilirsiniz. “Modeli indir, çalıştır, API üzerinden çağır” akışını sadeleştirir. Birçok model ailesini desteklemesi ve komut satırı üzerinden hızlı bir deneyim sunması sayesinde geliştiriciler arasında hızla yayıldı. Ayrıca yerel bir HTTP API sunduğu için, kendi uygulamanızdan bu modeli sanki bir servis gibi tüketebilirsiniz.

Kurulum ön koşulları

Bu rehberde Docker tabanlı bir kurulum anlatacağım. İhtiyacınız olanlar: Docker (ve mümkünse Docker Compose), yeterli disk alanı (model boyutuna göre 5–20 GB+), ve tercihen güçlü bir CPU/GPU. GPU hızlandırma her sistemde aynı kolaylıkta olmasa da, CPU ile de temel denemeler yapılabilir. Komutlar Linux/macOS için uygundur; Windows’ta WSL2 ile benzer şekilde ilerleyebilirsiniz.

Docker ile Ollama’yı çalıştırma

Önce kalıcı bir veri dizini kullanmak iyi bir fikirdir; çünkü modeller indirildiğinde container silinse bile tekrar indirmek zorunda kalmazsınız. Aşağıdaki komut, Ollama’yı arka planda ayağa kaldırır ve varsayılan API portunu (11434) dışarı açar:

Komut:

docker run -d --name ollama \ -p 11434:11434 \ -v ollama:/root/.ollama \ ollama/ollama

Bu noktada servis çalışır durumdadır. Kontrol etmek için:

docker logs -f ollama

İlk modelinizi indirme ve çalıştırma

Ollama, model yönetimini komut satırından çok kolaylaştırır. Container içine girip bir model çekebilir veya doğrudan “exec” ile komut çalıştırabilirsiniz. Örneğin küçük ve hızlı bir modelle başlamak mantıklıdır. Aşağıdaki örnekte bir modeli indirip interaktif şekilde çalıştırıyoruz:

docker exec -it ollama ollama run llama3

İlk çalıştırmada model indirileceği için biraz bekleyebilirsiniz. İndirme bittiğinde sohbet ekranı açılır; Türkçe istem (prompt) verip yanıt alabilirsiniz. Daha iyi yanıtlar için isteminizi net tutun: amaç, bağlam, çıktı formatı gibi detayları belirtin.

Model yönetimi: listeleme, silme, güncelleme

Disk alanı yerel LLM dünyasında hızlı tükenir. Bu yüzden indirilen modelleri düzenli yönetmek önemli. Yüklü modelleri listelemek için:

docker exec -it ollama ollama list

Kullanmadığınız bir modeli silmek için:

docker exec -it ollama ollama rm llama3

Modeli tekrar çekmek/güncellemek için aynı “run” komutu ya da ilgili pull akışı kullanılabilir. Ayrıca aynı modelin farklı varyantları (ör. boyut, quantization) performans ve kaliteyi ciddi etkiler. Daha küçük quantization daha hızlıdır ama doğruluk ve akıcılık düşebilir. Bu dengeyi kendi kullanım senaryonuza göre test ederek bulmanız gerekir.

HTTP API ile entegrasyon: uygulamaya bağlamak

Ollama’nın en büyük artılarından biri, yerelde bir servis gibi davranmasıdır. Böylece herhangi bir dille HTTP isteği atarak yanıt alabilirsiniz. Basit bir “prompt gönder, yanıt al” testi için terminalde şu isteği deneyin:

curl http://localhost:11434/api/generate -d '{ "model": "llama3", "prompt": "Bana 5 maddede SEO uyumlu blog yazısı ipucu ver.", "stream": false }'

Yanıtta genellikle modelin ürettiği metin ve bazı ek alanlar döner. Uygulama tarafında JSON parse edip “response” benzeri alanı kullanıcıya gösterebilirsiniz. stream seçeneğini açtığınızda token token akış alarak daha hızlı bir kullanıcı deneyimi sağlayabilirsiniz.

Performans ipuçları ve güvenlik notları

Yerel LLM çalıştırırken performans iki şeye bakar: donanım ve model seçimi. Eğer yalnızca metin özetleme, e-posta taslağı, basit kod yardımı gibi işler yapacaksanız daha küçük modeller yeterli olabilir. Daha karmaşık muhakeme ve uzun bağlam ihtiyaçlarında ise daha büyük modeller gerekebilir; bu da RAM/VRAM ve disk tüketimini artırır. Ayrıca Ollama’yı yalnızca kendi makinenizde kullanacaksanız portu dış dünyaya açmamak iyi bir güvenlik alışkanlığıdır. Sunucuda kullanıyorsanız, ters proxy ve erişim kontrolü (ör. yalnızca VPN içinden erişim) planlayın.

Sonuç: Yerelde LLM denemek artık zor değil

Docker ile Ollama kurulumunu yaptıktan sonra model indirmek, çalıştırmak ve API üzerinden uygulamaya bağlamak oldukça akıcı bir süreç. Bu yaklaşım; kişisel projeler, kurum içi araçlar, gizlilik odaklı metin işleme senaryoları ve düşük gecikme isteyen otomasyonlar için iyi bir seçenek. Bir sonraki adım olarak farklı model varyantlarını test edebilir, istem mühendisliğiyle çıktıları standardize edebilir ve kendi uygulamanızda bir “yerel yapay zekâ asistanı” deneyimi oluşturabilirsiniz.

23 Ocak 2026 Cuma

Windows 11’de WSL2 ile Docker Desktop Kullanmadan Docker Kurulumu ve İleri Seviye Ayarlar

Docker Desktop’sız Docker: Neden ve Ne Kazandırır?

Windows 11 üzerinde Docker kullanmanın en popüler yolu Docker Desktop kurmaktır. Ancak kurumsal lisans politikaları, kaynak tüketimi, arka planda çalışan servislerin fazlalığı veya daha “Linux’a yakın” bir Docker deneyimi isteği, birçok geliştiriciyi alternatif arayışına itiyor. İyi haber şu: WSL2 sayesinde Docker Engine’i doğrudan Linux tarafında kurup, Windows’tan komut satırı ile yönetmek mümkün. Bu yöntem genellikle daha hafif çalışır, daha kontrol edilebilir bir yapı sunar ve özellikle terminal odaklı geliştiriciler için oldukça rahattır.

Bu yazıda, Windows 11’de WSL2 (Ubuntu örneğiyle) kullanarak Docker Engine kurulumunu, Windows terminalinden Docker komutlarını çalıştırmayı ve performans/depoma/ ağ ayarları gibi birkaç ileri seviye noktayı adım adım ele alacağım. Sonuçta Docker Desktop olmadan da modern konteyner geliştirme akışını sürdürebileceksiniz.

Ön Koşullar: WSL2 ve Ubuntu Kurulumu

Öncelikle sisteminizde WSL2 aktif olmalı. Windows Terminal veya PowerShell’i yönetici olarak açıp aşağıdaki komutu çalıştırabilirsiniz:

wsl --install

Kurulum tamamlandıktan sonra Microsoft Store üzerinden Ubuntu yükleyebilir ya da komutla kurabilirsiniz. Ardından Ubuntu’yu açıp kullanıcı adı/parola belirleyin. WSL sürümünü kontrol etmek için:

wsl -l -v

Ubuntu’nun VERSION sütununda 2 yazdığından emin olun. Değilse:

wsl --set-version Ubuntu 2

Adım 1: Ubuntu’da Docker Engine Kurulumu (Resmi Depo)

WSL içindeki Ubuntu terminalinde önce paketleri güncelleyin:

sudo apt update && sudo apt upgrade -y

Gerekli paketleri yükleyin:

sudo apt install -y ca-certificates curl gnupg

Docker’ın resmi GPG anahtarını ekleyin ve depo kaynağını tanımlayın:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Sonra Docker paketlerini kurun:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Adım 2: Docker Servisini WSL’de Çalıştırma

WSL2’de systemd artık destekleniyor; en temiz yöntem systemd’yi açmaktır. Ubuntu içinde /etc/wsl.conf dosyasını düzenleyin:

sudo nano /etc/wsl.conf

İçeriğe şunu ekleyin:

[boot]
systemd=true

Ardından Windows tarafında WSL’i kapatıp yeniden başlatın:

wsl --shutdown

Ubuntu’yu tekrar açınca Docker servisini başlatın ve durumunu kontrol edin:

sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

Adım 3: Sudo’suz Docker Kullanımı (Geliştirici Konforu)

Her komutta sudo yazmamak için kullanıcıyı docker grubuna ekleyin:

sudo usermod -aG docker $USER

Değişikliğin uygulanması için oturumu kapatıp açın ya da Ubuntu terminalini kapatıp yeniden başlatın. Test:

docker run --rm hello-world

Windows Terminal’den Docker Komutlarını Yönetmek

Docker Engine WSL içinde çalıştığı için en basit yönetim biçimi, Windows Terminal’de doğrudan Ubuntu profilini kullanmaktır. Yani komutları Ubuntu sekmesinde çalıştırdığınızda her şey doğal şekilde ilerler. Eğer PowerShell’den tek satırla çalıştırmak isterseniz:

wsl -d Ubuntu -- docker ps

Bu yaklaşım, CI benzeri yerel script’lerde veya kısa kontrollerde oldukça işe yarar.

İleri Seviye Ayar 1: WSL Kaynak Sınırları (RAM/CPU)

WSL, varsayılan olarak sistem kaynaklarını dinamik kullanır. Docker build süreçleri ağırlaştığında RAM tüketimi artabilir. Bunu sınırlamak için Windows kullanıcı dizininize .wslconfig dosyası oluşturup örnek bir sınır koyabilirsiniz:

[wsl2]
memory=6GB
processors=4

Değişiklikten sonra wsl --shutdown yaparak yeniden başlatın. Bu ayar, özellikle dizüstü bilgisayarlarda fan ve pil performansını belirgin şekilde iyileştirir.

İleri Seviye Ayar 2: Dosya Performansı ve Proje Konumu

Kritik nokta şu: Docker konteynerleri WSL içindeki Linux dosya sisteminde daha hızlı çalışır. Projeyi /home/kullanici/proje altında tutmak genelde, projeyi /mnt/c üzerinden Windows dosya sisteminde tutmaktan daha performanslıdır. Özellikle Node.js bağımlılıkları, PHP vendor dizinleri veya çok sayıda küçük dosya içeren projelerde fark gözle görülür hale gelir.

İleri Seviye Ayar 3: Docker Compose v2 ve Buildx

Kurulumda gelen docker compose (v2) ve buildx eklentileri, modern geliştirme akışının temel parçaları. Örneğin çoklu servisli bir projeyi ayağa kaldırmak için:

docker compose up -d

Daha hızlı ve tekrar kullanılabilir build işlemleri için build cache’i etkin kullanan bir Dockerfile tasarlamak, WSL ortamında da doğrudan avantaj sağlar. Ayrıca buildx ile farklı platformlar için build almak (ör. linux/amd64 ve linux/arm64) ileri seviye senaryolarda elinizi güçlendirir.

Sık Karşılaşılan Sorunlar ve Hızlı Çözümler

Docker daemon çalışmıyor: systemd açık mı kontrol edin. cat /etc/wsl.conf ile doğrulayın, ardından wsl --shutdown ile yeniden başlatın.

Permission denied: Kullanıcınız docker grubunda olmayabilir. groups komutuyla kontrol edin, gerekirse usermod -aG docker adımını tekrarlayın.

Disk şişmesi: Konteyner ve imajlar büyüdükçe WSL sanal diski genişler. Düzenli olarak docker system prune kullanmak ve gereksiz imajları temizlemek iyi bir alışkanlıktır.

Sonuç

Docker Desktop kullanmadan, WSL2 üzerinde Docker Engine çalıştırmak Windows 11’de hem pratik hem de “Linux’a yakın” bir geliştirme ortamı sunuyor. Kurulum bir kez oturduğunda günlük kullanımda fark edilir bir hafiflik sağlıyor; kaynak yönetimi daha esnek oluyor ve terminal odaklı iş akışları daha akıcı ilerliyor. Eğer konteyner geliştirmeyi daha kontrollü ve minimal bir kurulumla sürdürmek istiyorsanız, bu yöntem kesinlikle değerlendirilmeye değer.

21 Ocak 2026 Çarşamba

Windows 11’de WSL 2 ile Docker Desktop Kullanmadan Docker Kurulumu ve Hızlandırma Rehberi

Giriş: Neden Docker Desktop’sız Docker?

Windows 11’de Docker kullanmanın en popüler yolu Docker Desktop olsa da, her senaryoda en iyi seçenek olmayabiliyor. Lisans politikaları, sistem kaynak tüketimi, kurumsal kısıtlar veya daha “çıplak” bir kurulum isteği gibi sebeplerle WSL 2 üzerinde doğrudan Docker Engine kurmak hem daha hafif hem de daha kontrol edilebilir bir yaklaşım sunuyor. Bu yazıda, Windows 11 üzerinde WSL 2 kullanarak Docker’ı Docker Desktop olmadan kurmayı, Windows ile entegrasyonu sağlamayı ve performansı iyileştirecek birkaç ileri seviye ayarı adım adım ele alacağım.

1) Ön Koşullar: WSL 2 ve Dağıtım Seçimi

Öncelikle WSL 2’nin etkin olduğundan emin olmalısınız. Windows 11’de çoğu sistemde WSL zaten sorunsuz çalışır; yine de güncel bir kurulum için PowerShell’i yönetici olarak açıp WSL’yi kurmak veya güncellemek iyi bir başlangıçtır. Ardından Ubuntu 22.04/24.04 gibi yaygın bir dağıtım seçmenizi öneririm; dokümantasyon ve topluluk desteği güçlü olduğu için sorun çözmek daha kolay olur.

Kontrol: WSL sürümünüzü görmek için Windows tarafında wsl -l -v komutunu kullanabilirsiniz. Dağıtımınızın sürümü “2” değilse WSL 2’ye yükseltmeniz gerekir. Ayrıca BIOS/UEFI’de sanallaştırma (Virtualization) açık olmalıdır; aksi halde WSL 2 beklenmedik şekilde yavaşlar veya hiç çalışmaz.

2) WSL İçinde Docker Engine Kurulumu

Docker Desktop kurmadan Docker çalıştırmanın ana fikri şu: Docker Engine, Linux ortamında çalışır; biz de bunu WSL 2 içindeki Ubuntu’da kurarız. Ardından Docker komutlarını aynı WSL ortamında kullanırız. Böylece arka planda ayrı bir GUI uygulaması değil, standart Linux servisleri devreye girer.

Adımlar: Ubuntu terminalini açın ve sisteminizi güncelleyin. Daha sonra Docker’ın resmi deposunu ekleyerek Docker Engine kurun. Depodan kurmak, dağıtım deposundaki eski sürümlere göre genellikle daha güncel bir Docker sürümü sağlar. Kurulumdan sonra Docker servisinin çalıştığını doğrulamak için docker version ve docker run hello-world komutlarını deneyebilirsiniz.

Kurulum sonrası sık yapılan bir ayar da kullanıcıyı “docker” grubuna eklemektir. Böylece her komutta sudo yazmanız gerekmez. Bu değişiklikten sonra WSL oturumunu kapatıp yeniden açmanız gerekir; aksi halde yetki değişimi görünmeyebilir.

3) systemd ile Servis Yönetimi (İleri Seviye ve Önerilen)

Eskiden WSL’de servis yönetimi daha zahmetliydi; ancak modern Windows 11 ve güncel WSL sürümlerinde systemd desteği bulunuyor. Docker Engine’i düzgün bir Linux makinesindeki gibi yönetmek istiyorsanız systemd oldukça kritik. Böylece Docker servisi WSL oturumu açıldığında otomatik başlar ve kapanışta düzgün durur.

systemd’yi etkinleştirmek için WSL içindeki yapılandırma dosyasına ilgili ayarı eklemeniz gerekir. Değişiklikten sonra Windows tarafında wsl --shutdown çalıştırıp WSL’yi yeniden başlatmak gerekir. Ardından Ubuntu içinde systemctl status docker ile servisin durumunu kontrol edebilirsiniz.

4) Windows Terminal ve VS Code ile Akıcı Geliştirme

Bu kurulumun pratik tarafı, geliştirme araçlarıyla birleştiğinde ortaya çıkar. Windows Terminal üzerinden Ubuntu profilinizi açıp Docker komutlarını doğrudan çalıştırabilirsiniz. Eğer Visual Studio Code kullanıyorsanız, Remote - WSL eklentisi ile projenizi WSL dosya sistemi içinde açıp konteyner build/run süreçlerini Linux tarafında yürütebilirsiniz. Bu, özellikle Node.js, Python ve Go projelerinde dosya izinleri ve satır sonu farklılıklarından kaynaklı problemleri ciddi şekilde azaltır.

Önemli not: Proje dosyalarınızı mümkünse WSL dosya sisteminde tutun (ör. /home/kullanici/proje). Windows sürücüsü üzerinden (ör. /mnt/c/...) çalışmak, özellikle çok sayıda küçük dosya içeren projelerde I/O performansını düşürebilir.

5) Performans İyileştirmeleri: .wslconfig ile Kaynak Sınırları

Docker konteynerleri CPU ve RAM tüketimini hızla artırabilir. WSL 2, varsayılan olarak sistem kaynaklarını dinamik kullanır; bu iyi olsa da bazı durumlarda RAM şişmesi veya disk kullanımının kontrolsüz büyümesi can sıkabilir. Windows kullanıcı dizininizde yer alan .wslconfig dosyasıyla WSL’nin kullanacağı kaynakları sınırlayabilirsiniz.

Örneğin RAM’i 8 GB ile sınırlamak, CPU sayısını belirlemek veya swap boyutunu ayarlamak mümkündür. Bu ayarlar özellikle aynı anda tarayıcı, IDE ve birkaç konteyner çalıştıran geliştiriciler için sistemin tepkiselliğini korur. Ayarlardan sonra wsl --shutdown ile WSL’yi yeniden başlatmayı unutmayın.

6) Ağ ve Port Yayınlama Mantığı: “localhost” Gerçeği

WSL 2, kendi sanal ağ katmanına sahip olduğu için “localhost” konusu zaman zaman kafa karıştırır. İyi haber şu: Güncel Windows 11 sürümlerinde WSL ile Windows arasında “localhost” üzerinden port yönlendirme çoğu senaryoda otomatik çalışır. Yani WSL içinde 8080 portunu yayınlayan bir konteyneri, Windows’ta tarayıcıdan http://localhost:8080 ile açabilirsiniz.

Yine de kurumsal güvenlik yazılımları veya özel firewall kuralları port erişimini engelleyebilir. Böyle bir durumda Windows Firewall izinlerini kontrol etmek, konteynerin gerçekten port yayınladığını docker ps ile doğrulamak ve WSL’nin IP adresini kullanarak test yapmak işe yarar.

7) Artılar, Eksiler ve Ne Zaman Tercih Etmeli?

Artılar: Daha az arka plan bileşeni, daha düşük kaynak tüketimi, daha “Linux’a yakın” bir Docker deneyimi ve kurulum üzerinde daha fazla kontrol. Ayrıca bazı kullanıcılar için Docker Desktop’ın getirdiği ekstra katmanlar yerine doğrudan Engine kullanmak daha öngörülebilir.

Eksiler: GUI yönetim paneli yoktur, bazı entegrasyonlar (Kubernetes tek tıkla aç/kapat gibi) Docker Desktop kadar hazır gelmez. Ayrıca birden fazla WSL dağıtımı kullanıyorsanız Docker’ın hangi dağıtımda kurulu olduğu ve nereden çalıştırıldığı konusunu iyi yönetmeniz gerekir.

Sonuç

Windows 11’de WSL 2 üzerinde Docker Engine kurup Docker Desktop kullanmadan çalışmak, özellikle geliştirici odaklı ve performans hassasiyeti olan kullanıcılar için güçlü bir alternatiftir. Doğru yapılandırma ile servis yönetimi systemd üzerinden düzenli çalışır, proje dosyalarını WSL içinde tutarak I/O performansı korunur ve .wslconfig ile sistem kaynakları kontrol altına alınır. Eğer hedefiniz “hafif, hızlı ve kontrol edilebilir” bir Docker ortamıysa bu yöntem, günlük geliştirme akışınıza beklediğinizden daha rahat uyum sağlayacaktır.

4 Ocak 2026 Pazar

Windows 11’de WSL 2 + Docker ile Yerel Geliştirme Ortamı Kurulumu (Adım Adım)

Giriş: Neden WSL 2 + Docker?

Windows üzerinde yazılım geliştirenlerin en büyük şikâyetlerinden biri, Linux tabanlı araçlarla uyumlu ve hızlı bir ortamı stabil şekilde kurmanın zor olmasıydı. Windows Subsystem for Linux (WSL) 2 bu tabloyu ciddi şekilde değiştirdi. WSL 2, gerçek bir Linux çekirdeğiyle çalıştığı için performans ve uyumluluk açısından eski yöntemlere göre çok daha iyi. Buna Docker’ı eklediğinizde; Node.js, Python, Go, PostgreSQL, Redis gibi bileşenleri “makinenizi kirletmeden” konteynerlerle yönetebilir, projeleri daha taşınabilir hale getirebilirsiniz. Bu yazıda Windows 11 üzerinde WSL 2 + Docker ile modern bir yerel geliştirme ortamını adım adım kuracağız.

Ön Koşullar

Kuruluma başlamadan önce Windows 11’in güncel olduğundan emin olun. Ayrıca BIOS/UEFI tarafında sanallaştırma (Intel VT-x / AMD-V) açık olmalı. Eğer daha önce sanallaştırma tabanlı bir yazılım (eski VirtualBox yapılandırmaları gibi) sorun çıkardıysa, kurulum sırasında çakışma ihtimalini göz önünde bulundurun.

1) WSL 2 Kurulumu (Tek Komutla)

En pratik yöntem, Windows Terminal veya PowerShell’i Yönetici olarak açıp şu komutu çalıştırmaktır:

wsl --install

Bu komut WSL bileşenlerini kurar, varsayılan Linux dağıtımını indirir ve gerekli ayarları yapar. İşlem sonrası yeniden başlatma istenirse mutlaka yeniden başlatın. Kurulum tamamlandığında dağıtım ilk açılışta sizden bir Linux kullanıcı adı ve parola belirlemenizi isteyecek.

2) Varsayılan Dağıtımı ve Sürümü Kontrol Etme

Kurulumdan sonra WSL dağıtımlarını ve hangi sürümde çalıştıklarını görmek için:

wsl -l -v

Burada dağıtımınızın sürümü 2 görünmelidir. Eğer 1 görünüyorsa (bazı eski sistemlerden yükseltmelerde olabiliyor), şu komutla WSL 2’ye dönüştürebilirsiniz:

wsl --set-version Ubuntu 2

“Ubuntu” yerine listede gördüğünüz dağıtım adını yazın.

3) Docker Kurulumu: Docker Desktop + WSL Entegrasyonu

Windows 11 üzerinde en sorunsuz seçenek genellikle Docker Desktop kullanmaktır. Docker Desktop’ı kurduktan sonra ayarlarda WSL entegrasyonunu açmanız gerekir. Docker Desktop içinde:

Settings > Resources > WSL Integration bölümüne gidin ve kullandığınız Linux dağıtımı için entegrasyonu etkinleştirin.

Bu sayede Docker komutlarını doğrudan WSL terminalinden çalıştırabilir, Linux ortamında konteyner yönetimini çok daha doğal bir şekilde yapabilirsiniz.

4) WSL İçinde Gerekli Paketleri Güncelleme

Ubuntu (veya kullandığınız dağıtım) terminalini açın ve paketleri güncelleyin:

sudo apt update && sudo apt upgrade -y

Geliştirme araçlarını sıklıkla kullanacaksanız temel araç seti de işinize yarar:

sudo apt install -y build-essential git curl

5) Test: Docker WSL İçinde Çalışıyor mu?

WSL terminalinde şu komutla Docker’ın doğru çalıştığını doğrulayın:

docker version

Ardından basit bir konteyner test edebilirsiniz:

docker run --rm hello-world

Bu komut, Docker’ın imaj çekme ve çalıştırma adımlarının sorunsuz olduğunu gösterir.

6) Örnek Proje: docker-compose ile PostgreSQL + Redis

Gerçek bir geliştirme senaryosunda genelde veritabanı ve önbellek servislerini konteynerle yönetmek istersiniz. Proje klasörünüzde docker-compose.yml dosyası oluşturup aşağıdaki yapıyı kullanabilirsiniz (örnek):

services:
postgres:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
ports:
- "5432:5432"
redis:
image: redis:7
ports:
- "6379:6379"

Konteynerleri ayağa kaldırmak için:

docker compose up -d

Durdurmak için:

docker compose down

Bu yaklaşımın en güzel tarafı, proje klasörünü başka bir makineye taşıdığınızda aynı servislerin neredeyse aynı komutlarla ayağa kalkmasıdır.

7) Performans İpucu: Projeyi WSL Dosya Sisteminde Tutun

WSL ile çalışırken en kritik performans noktalarından biri proje dosyalarının nerede durduğudur. Özellikle Node.js gibi çok fazla küçük dosya okuyan araçlar kullanıyorsanız, projeyi Windows diskinde (ör. C:\) tutmak yerine WSL tarafındaki Linux dosya sisteminde (ör. /home/kullanici/proje) tutmak ciddi hız kazandırır. Editör olarak VS Code kullanıyorsanız, “WSL” uzantısıyla projeyi WSL içinde açmak da iş akışını kolaylaştırır.

Kapanış: Daha Temiz, Daha Taşınabilir Bir Geliştirme Düzeni

Windows 11 üzerinde WSL 2 ve Docker birlikte kullanıldığında, hem Linux uyumlu araçların rahatlığını hem de Windows ekosisteminin pratikliğini bir arada alırsınız. Üstelik projeleriniz “benim bilgisayarımda çalışıyor” sorununa daha az takılır; çünkü servisleri konteynerlerle standartlaştırırsınız. Bu kurulumdan sonra CI/CD, özel ağlar, multi-container mikroservis geliştirme ve hatta Kubernetes denemeleri gibi daha ileri senaryolara geçmek çok daha kolay hale gelir.

3 Ocak 2026 Cumartesi

WebAssembly (Wasm) ile Node.js Performansını Artırma: Rust ile Hızlı Modül Geliştirme Rehberi

WebAssembly neden gündemde?

Node.js ekosistemi pratikliğiyle ünlü ama bazı işlerde “kolay” her zaman “hızlı” anlamına gelmiyor. Özellikle JSON işleme, sıkıştırma, görüntü/ham veri dönüştürme, kriptografi veya matematiksel hesaplar gibi CPU ağırlıklı senaryolarda JavaScript tek başına sınıra dayanabiliyor. WebAssembly (Wasm) burada devreye giriyor: Rust gibi sistem dilleriyle yazılmış kodu Wasm’a derleyip Node.js içinden çalıştırarak performansı hissedilir biçimde artırmak mümkün.

Bu yazıda ileri seviye ama uygulanabilir bir yaklaşımı ele alacağız: Rust ile Wasm modülü yazıp Node.js projesine entegre etmek. Hedefimiz “her şeyi Wasm’a taşıyalım” değil; darboğaz olan parçaları tespit edip kritik fonksiyonları hızlandırmak.

Ne zaman Wasm kullanmalı?

Wasm, her sorunun sihirli çözümü değil. Aşağıdaki durumlarda özellikle anlamlı olur: çok sayıda tekrar eden hesap (ör. hashing, parsing, diff), büyük veri üzerinde döngüler, yüksek frekanslı çağrılan saf fonksiyonlar ve GC baskısı oluşturan işlemler. Buna karşılık, ağ I/O ağırlıklı API’larda veya veritabanı bekleme süresi baskınken Wasm’a geçiş beklediğiniz kazanımı getirmeyebilir.

Bir kural: Önce ölçün. Node.js tarafında --prof, clinic.js veya yerleşik CPU profilleyicilerle darboğazı doğrulamadan Wasm’a koşmak genelde gereksiz karmaşıklık yaratır.

Kurulum: Rust ve wasm-pack

Bu rehberde Rust tarafında wasm-pack aracını kullanacağız. Node.js ile entegrasyon için en pratik yollardan biri. Gerekenler: güncel Node.js (LTS), Rust toolchain ve wasm-pack.

Rust kurulumu: Rust’ı resmi yöntemle kurduktan sonra wasm-pack yükleyin. Komut satırında: cargo install wasm-pack. Ardından projenizi oluşturacağız.

Adım adım: Rust ile Wasm modülü yazma

Örnek olarak CPU’yu yoran ama anlaşılır bir iş seçelim: büyük bir dizide basit istatistik (toplam ve ortalama) hesaplamak. Elbette gerçek hayatta daha karmaşık algoritmalar daha iyi kazanç sağlar; amaç süreçleri göstermek.

Yeni bir Rust-Wasm paketi oluşturun: wasm-pack new faststats. Klasör içine girip src/lib.rs dosyasını düzenleyin. Rust tarafında JavaScript’ten veri alırken kopyalama maliyetlerine dikkat etmek gerekir; mümkünse TypedArray yaklaşımı tercih edilir. wasm-bindgen ile gelen veri türlerini kontrollü kullanacağız.

Temel bir örnek mantık: JavaScript’ten Float64Array gönderip Rust’ta döngüyle toplamı hesaplayacağız. Dönüşte toplam ve ortalamayı tek bir yapı olarak dönmek yerine, sade kalması için JSON benzeri bir nesne döndürmek yerine iki sayıyı ayrı döndürmek veya küçük bir struct kullanmak mantıklıdır. wasm-bindgen, basit türlerde daha verimli çalışır.

Derleme: Node.js hedefi ile paketleme

Derleme için: wasm-pack build --target nodejs komutunu kullanın. Bu işlem pkg klasöründe Node.js’in içe aktarabileceği bir sarmalayıcı ve .wasm

Projeyi bir monorepo gibi kullanabilir veya üretilen paketi ana Node.js projenize kopyalayabilirsiniz. Daha temiz yöntem, Rust tarafını ayrı paket tutup ana projede dosya bağımlılığıyla kullanmaktır.

Node.js tarafında kullanım

Node.js projenizde üretilen paketi içe aktarın. Eğer aynı repo içindeyseniz, örneğin ./faststats/pkg yolundan import edebilirsiniz. Ardından Float64Array oluşturup Wasm fonksiyonunu çağırın. Bu noktada iki şeye dikkat edin: veri kopyalama ve çağrı sıklığı. Çok küçük dizilerde veya çok seyrek çağrılarda Wasm köprüsünün maliyeti kazancı gölgeleyebilir.

Pratik bir yaklaşım: veriyi parça parça göndermek yerine tek seferde daha büyük bloklar halinde işlemek. Ayrıca Rust tarafında gereksiz bellek tahsisi yapmamak. Wasm modülleri hız sağlar, ama yanlış veri akışı tasarımı tüm kazanımı yiyebilir.

Performans ölçümü: Gerçekçi benchmark

Performansı değerlendirirken “tek bir çalıştırma” yerine, ısınma etkisini ve JIT davranışını göz önüne alan bir ölçüm yapın. Basitçe process.hrtime.bigint() ile süre ölçebilirsiniz. Aynı işi saf JavaScript ile ve Wasm ile yaptığınız iki senaryoyu karşılaştırın. Önemli olan sadece ortalama süre değil; p95/p99 gecikmeleri de fark yaratır.

Wasm’ın en güçlü olduğu yerlerden biri de deterministik performanstır: GC dalgalanmalarını azaltabilir. Özellikle yoğun hesap yapan servislerde daha stabil gecikme dağılımları elde edebilirsiniz.

Sık yapılan hatalar ve ipuçları

1) Her şeyi Wasm’a taşımak: Uygulamanın tamamını Wasm’a geçirmek yerine sadece sıcak noktaları hedefleyin. 2) Küçük fonksiyonları çok sık çağırmak: Köprü maliyeti artar; daha büyük iş parçaları tasarlayın. 3) Yanlış veri türü seçmek: String alışverişi maliyetlidir; mümkünse binary/TypedArray kullanın. 4) Hata ayıklamayı zorlaştırmak: Rust tarafında basit loglama ve testler ekleyin; Node tarafında da giriş doğrulaması yapın.

Ek bir öneri: Eğer amacınız Node.js’e “native hız” kazandırmaksa Wasm tek seçenek değil. N-API ile C/C++ eklentileri veya Rust tabanlı native modüller de güçlüdür. Ancak Wasm, taşınabilirlik ve dağıtım kolaylığı açısından birçok projede daha sürdürülebilir bir yol sunar.

Sonuç

WebAssembly, Node.js projelerinde performans darboğazlarını kırmak için modern ve pratik bir araç. Rust ile yazıp wasm-pack ile paketleyerek, kritik hesaplama fonksiyonlarını güvenli ve hızlı bir şekilde Node.js’e taşıyabilirsiniz. Doğru senaryoda, daha düşük CPU kullanımı ve daha stabil gecikmeler elde etmek mümkün. En iyi sonuç için profilleme yapın, veri geçişini optimize edin ve Wasm’ı “cerrahi” bir hızlandırma katmanı gibi konumlandırın.

1 Ocak 2026 Perşembe

Windows 11’de WSL 2 ile Docker Desktop Olmadan Docker Kurulumu ve Sorunsuz Çalıştırma Rehberi

Docker’ı Docker Desktop olmadan kullanmak neden mantıklı?

Windows 11 üzerinde Docker denince çoğu kişinin aklına doğrudan Docker Desktop geliyor. Ancak özellikle kurumsal lisans koşulları, sistem kaynak tüketimi veya daha “hafif” bir geliştirme ortamı arayanlar için Docker Desktop’sız bir kurulum oldukça cazip. İyi haber: WSL 2 (Windows Subsystem for Linux) sayesinde Windows içinde gerçek bir Linux çekirdeği üzerinde Docker Engine çalıştırmak mümkün. Bu rehberde, Windows 11’de WSL 2 kurulumunu doğrulayıp bir Linux dağıtımı üzerinde Docker Engine kuracak, ağ ve servis ayarlarını yapacak ve günlük kullanım için pratik ipuçlarını paylaşacağım.

Ön koşullar ve genel yaklaşım

Bu yöntem, Docker Engine’i Windows’a değil, WSL 2 içindeki Linux’a kurar. Böylece konteynerler Linux ortamında çalışır, siz ise Windows’tan veya WSL terminalinden komut gönderirsiniz. İhtiyacınız olanlar: Windows 11, yönetici yetkisi, bir WSL dağıtımı (Ubuntu önerilir) ve temel terminal kullanımı. Kurulum adımlarını mümkün olduğunca sade tuttum, ama sorun yaşamamanız için kritik noktalara özellikle değineceğim.

1) WSL 2’yi kurma ve doğrulama

PowerShell’i Yönetici olarak açın ve WSL’yi kurun:

Komut: wsl --install

Sistem sizden yeniden başlatma isteyebilir. Kurulumdan sonra yüklü dağıtımları ve WSL sürümünü kontrol edin:

Komut: wsl -l -v

Listede Ubuntu (veya seçtiğiniz dağıtım) görünmeli ve VERSION alanında 2 yazmalıdır. Eğer 1 ise şunu çalıştırabilirsiniz:

Komut: wsl --set-version Ubuntu 2

Ardından Ubuntu’yu açıp bir Linux kullanıcı adı/şifresi oluşturun. Bu hesap Linux içinde yönetim (sudo) işlemleri için kullanılacak.

2) Ubuntu içinde Docker Engine kurulumu

Önce paketleri güncelleyin ve gerekli bağımlılıkları yükleyin:

sudo apt update && sudo apt upgrade -y

sudo apt install -y ca-certificates curl gnupg lsb-release

Docker’ın resmi deposunu ekleyip GPG anahtarını tanımlayın:

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

Depo kaydını ekleyin:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engine’i kurun:

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3) WSL 2’de Docker servisini çalıştırma (kritik nokta)

WSL 2’de systemd desteği artık mümkün, ancak dağıtım ayarınıza bağlı olarak kapalı olabilir. En temiz yöntem systemd’yi açıp Docker servisinin otomatik yönetilmesini sağlamaktır. Ubuntu’da şu dosyayı düzenleyin:

sudo nano /etc/wsl.conf

İçine şunu ekleyin:

[boot]
systemd=true

Sonra Windows tarafında WSL’yi yeniden başlatın:

PowerShell: wsl --shutdown

Ubuntu’yu tekrar açın ve Docker servis durumunu kontrol edin:

sudo systemctl enable docker

sudo systemctl start docker

systemctl status docker --no-pager

4) “sudo” yazmadan Docker kullanmak

Her komutta sudo yazmak istemiyorsanız kullanıcıyı docker grubuna ekleyin:

sudo usermod -aG docker $USER

Bu değişikliğin uygulanması için oturumu kapatıp açın veya WSL’yi kapatıp yeniden başlatın. Ardından test edin:

docker run --rm hello-world

Çıktıda “Hello from Docker!” benzeri bir mesaj görüyorsanız temel kurulum tamamdır.

5) Docker Compose ve örnek proje

Yeni kurulumla birlikte Docker Compose ayrı bir ikili olmaktan çok “plugin” olarak gelir. Sürümü doğrulayın:

docker compose version

Hızlı bir test için bir klasör oluşturup basit bir Nginx servisi ayağa kaldırabilirsiniz. Örneğin proje dizinine compose.yaml koyup şu içeriği yazın (metin olarak): nginx imajı, 8080 portu. Sonrasında çalıştırın:

docker compose up -d

Tarayıcıdan http://localhost:8080 açıldığında Nginx karşılama sayfası geliyorsa ağ yönlendirmesi doğru çalışıyordur. İşiniz bitince:

docker compose down

6) Performans ve dosya konumu: Küçük ama önemli bir ipucu

WSL 2’de en sık yapılan hatalardan biri projeyi Windows dosya sisteminde (ör. C:\) tutup WSL içinden çalıştırmaktır. Bu, özellikle çok dosyalı Node.js/Python projelerinde I/O performansını düşürür. Daha akıcı bir deneyim için projeyi Linux dosya sisteminde (ör. /home/kullanici/proje) tutun. Visual Studio Code kullanıyorsanız “Remote - WSL” yaklaşımıyla klasörü doğrudan WSL içinde açabilirsiniz.

Sık karşılaşılan sorunlar ve hızlı çözümler

Docker çalışmıyor / daemon’a bağlanılamıyor: Büyük ihtimalle servis başlamamıştır. sudo systemctl start docker ile başlatın, systemd ayarını kontrol edin.

İzin hatası (permission denied): Kullanıcınız docker grubunda olmayabilir. sudo usermod -aG docker $USER ardından WSL’yi yeniden başlatın.

Port çakışması: 8080 gibi portlar doluysa Compose dosyasında farklı port seçin (ör. 8081:80).

Kapanış

WSL 2 üzerinde Docker Engine kurmak, Windows 11’de Linux konteyner ekosistemini daha kontrol edilebilir ve çoğu zaman daha hafif bir şekilde kullanmanızı sağlar. Üstelik günlük geliştirme işlerinde Docker Desktop’a bağlı kalmadan modern bir iş akışı kurabilirsiniz. Bu kurulumdan sonra CI benzeri script’ler yazmak, Compose ile çoklu servis ortamları hazırlamak ve BuildKit/Buildx ile imaj üretimini hızlandırmak çok daha keyifli hale geliyor.

29 Aralık 2025 Pazartesi

Windows 11’de WSL 2 ile Docker’ı Kurmak ve Performanslı Bir Geliştirme Ortamı Hazırlamak

WSL 2 + Docker neden bu kadar popüler oldu?

Windows üzerinde Linux tabanlı bir geliştirme ortamı kurmanın en pratik yollarından biri WSL 2 (Windows Subsystem for Linux). Üzerine bir de Docker eklediğinizde, hem Linux ekosistemindeki araçları kullanabilir hem de container tabanlı projeleri Windows’ta zahmetsizce çalıştırabilirsiniz. Bu yazıda, Windows 11’de WSL 2 kurulumundan Docker entegrasyonuna, performans ayarlarından sık yapılan hatalara kadar uçtan uca bir “how-to” rehberi bulacaksınız.

Ön koşullar ve kısa kontrol listesi

Başlamadan önce sisteminizin sanallaştırma desteğinin açık olduğundan emin olun. Görev Yöneticisi > Performans > CPU bölümünde “Sanallaştırma: Etkin” görmelisiniz. Değilse BIOS/UEFI üzerinden Intel VT-x ya da AMD-V etkinleştirilmelidir. Ayrıca Windows 11’in güncel sürümünü kullanmanız (özellikle WSL tarafında) daha az sürpriz çıkarır.

1) WSL 2’yi kurma ve varsayılanı WSL 2 yapma

En hızlı yöntem, PowerShell’i yönetici olarak açıp aşağıdaki komutu çalıştırmaktır. Bu komut WSL bileşenlerini kurar, çekirdeği indirir ve bir Linux dağıtımı yüklemenize yardımcı olur:

Komut: wsl --install

Kurulumdan sonra sistemi yeniden başlatın. Ardından WSL sürümünüzü ve dağıtımlarınızı kontrol edin:

Komut: wsl -l -v

Varsayılan sürümü WSL 2 yapmak için:

Komut: wsl --set-default-version 2

2) Dağıtım seçimi: Ubuntu ile başlamak

Yeni başlayanlar ve geniş topluluk desteği nedeniyle çoğu geliştirici WSL üzerinde Ubuntu tercih ediyor. Microsoft Store üzerinden “Ubuntu” kurabilir ya da komutla listeleyip yükleyebilirsiniz:

Komut: wsl --list --online

Komut: wsl --install -d Ubuntu

İlk açılışta Linux kullanıcı adı ve şifre belirleyeceksiniz. Burada seçtiğiniz kullanıcı, geliştirme süreçlerinde sürekli kullanılacağı için basit ama anlamlı bir isim seçmek işinizi kolaylaştırır.

3) Docker Desktop kurulumu ve WSL entegrasyonu

Windows 11 üzerinde en sorunsuz yol genellikle Docker Desktop kurmaktır. Kurulum sırasında “Use WSL 2 instead of Hyper-V” benzeri bir seçenek görürseniz WSL 2’yi tercih edin. Kurulum tamamlandıktan sonra Docker Desktop’ı açın ve şu ayarları kontrol edin:

Settings > General: WSL 2 tabanlı motor etkin olmalı.

Settings > Resources > WSL Integration: Kurduğunuz Ubuntu dağıtımı için entegrasyonu aktif edin.

Bu noktadan sonra Ubuntu terminalinde docker version ve docker ps komutlarını çalıştırarak her şeyin düzgün bağlandığını doğrulayabilirsiniz.

4) Performans için kritik öneri: Projeyi Linux dosya sisteminde tutun

WSL 2 ile en sık yapılan performans hatası, projeyi Windows dosya sisteminde (ör. C:\) tutup WSL içinden işlemektir. Bu, özellikle Node.js, PHP Composer veya büyük Git depolarında dramatik yavaşlamaya neden olur. Bunun yerine projenizi Ubuntu tarafında, örneğin /home/kullaniciadi/proje altında konumlandırın. Windows’tan erişmek isterseniz Dosya Gezgini’ne \\wsl$ yazarak WSL dosya sistemine girebilirsiniz.

5) Kaynak yönetimi: .wslconfig ile RAM/CPU sınırı koyma

Docker container’ları ve WSL 2 birlikte çalışırken bazen sistem RAM’ini gereğinden fazla tüketebilir. Bu durumda Windows kullanıcı profiliniz altına .wslconfig dosyası oluşturup kaynak sınırı koyabilirsiniz. Dosya yolu genellikle C:\Users\KullaniciAdiniz\.wslconfig şeklindedir. İçeriği örnek olarak şu mantıkta olabilir: RAM limit, CPU çekirdeği, swap boyutu. Değişiklik sonrası WSL’yi kapatıp açmanız gerekir:

Komut: wsl --shutdown

Bu ayar, özellikle aynı anda IDE, tarayıcı ve container’lar açıkken sistemin nefes almasını sağlar.

6) Port yönlendirme ve yerel geliştirme

Docker ile ayağa kaldırdığınız servisleri (ör. 3000, 8080, 5432) Windows üzerinden de kullanmak isteyeceksiniz. Genel senaryoda container portlarını -p ile publish ettiğinizde Windows tarafında localhost üzerinden erişebilirsiniz. Yine de bazı ağ senaryolarında güvenlik yazılımları veya kurumsal politikalar trafiği engelleyebilir. Sorun yaşarsanız ilk kontrol noktası Windows Güvenlik Duvarı ve Docker Desktop’ın network ayarları olmalıdır.

7) Sık karşılaşılan sorunlar ve hızlı çözümler

Docker çalışmıyor / daemon’a bağlanamıyor: Docker Desktop’ın açık olduğundan ve ilgili dağıtımda WSL entegrasyonunun aktif edildiğinden emin olun. Ardından Ubuntu terminalinde yeniden deneyin.

Disk şişmesi: Uzun süre kullanılan Docker ortamlarında image ve volume birikir. Düzenli aralıklarla gereksiz kaynakları temizlemek için docker system prune (dikkatli kullanın) faydalı olabilir.

Git performansı düşük: Proje konumu çoğu zaman sebep olur. Repo’yu Windows yerine Linux dosya sistemine taşıyın.

Sonuç: Windows’ta Linux konforu, Docker ile taşınabilirlik

WSL 2 + Docker ikilisi, Windows 11 üzerinde modern geliştirme akışlarının neredeyse tamamını kapsayan güçlü bir kombinasyon sunuyor. Doğru kurulum ve birkaç performans ayarıyla; container tabanlı projeleri daha hızlı çalıştırabilir, bağımlılık karmaşasını azaltabilir ve ekip içinde tutarlı bir ortam sağlayabilirsiniz. Özellikle projelerinizi WSL dosya sisteminde tutmak ve kaynak yönetimini doğru yapmak, bu kurulumdan alacağınız verimi belirgin biçimde artırır.

27 Aralık 2025 Cumartesi

Windows 11’de WSL 2 ile Docker Desktop Kullanmadan Docker Kurulumu ve İnce Ayar Rehberi

Docker’ı Windows’ta “hafif” çalıştırmak neden önemli?

Windows 11 üzerinde konteyner geliştirme yapanların büyük kısmı Docker Desktop ile başlıyor. Ancak zamanla kaynak tüketimi, otomatik güncellemeler, kurumsal lisans gereksinimleri veya arka planda çalışan servislerin fazlalığı gibi sebeplerle daha “temiz” bir kurulum arayışı doğuyor. Bu yazıda, WSL 2 (Windows Subsystem for Linux) kullanarak Docker’ı Docker Desktop’a ihtiyaç duymadan kurmayı, performans ve ağ ayarlarını ince ayarlamayı ve günlük kullanımda dikkat edilmesi gereken noktaları adım adım ele alacağım.

1) Ön koşullar: WSL 2 ve Linux dağıtımı

Öncelikle Windows 11’de WSL 2’nin aktif olması gerekiyor. Microsoft Store üzerinden Ubuntu 22.04/24.04 gibi güncel bir dağıtım kurmanız önerilir. WSL tarafında çalışacağımız için, komutların büyük kısmı Ubuntu terminalinde çalıştırılacak. Kurulumdan sonra Ubuntu’yu açıp güncellemeleri almak iyi bir başlangıçtır:

sudo apt update && sudo apt upgrade -y

WSL sürümünüzün 2 olduğundan emin olmak için Windows Terminal (PowerShell) tarafında şu komutu kullanabilirsiniz: wsl -l -v. Dağıtımınız “Version 2” görünmüyorsa WSL 2’ye çevirmek gerekir.

2) Docker Engine kurulumu (Docker Desktop olmadan)

Docker’ı WSL içindeki Ubuntu’ya kurduğumuzda aslında Docker Engine (dockerd) Linux içinde çalışır. Bu yaklaşımın avantajı, Windows tarafında ekstra arayüz ve servis yükü olmadan konteyner çalıştırabilmenizdir.

Ubuntu üzerinde önerilen yöntem, Docker’ın resmi deposunu eklemektir. Sırasıyla şu komutları çalıştırın:

sudo apt-get update

sudo apt-get install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

Ardından Docker bileşenlerini kurun:

sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3) WSL’de systemd ve Docker servisinin yönetimi

Güncel WSL sürümlerinde systemd desteği mevcut. Docker servisinin otomatik ve sorunsuz başlaması için systemd’yi etkinleştirmek işleri kolaylaştırır. Ubuntu içinde /etc/wsl.conf dosyasını açıp aşağıdakini ekleyin:

[boot]
systemd=true

Sonra Windows tarafında WSL’i kapatıp yeniden başlatın: wsl --shutdown. Ubuntu’yu tekrar açtıktan sonra Docker’ı başlatıp durumunu kontrol edebilirsiniz:

sudo systemctl enable --now docker

systemctl status docker

4) “sudo” derdini bitirmek: docker grubuna kullanıcı ekleme

Her docker komutunda sudo yazmak istemiyorsanız, kullanıcıyı docker grubuna alın:

sudo usermod -aG docker $USER

Değişikliğin uygulanması için terminal oturumunu kapatıp açın. Ardından test:

docker run --rm hello-world

5) Docker Compose ve modern kullanım

Yeni yaklaşımda “docker-compose” ayrı bir ikili yerine çoğunlukla docker compose alt komutu olarak gelir. Kurulumla birlikte “Compose plugin” geldiği için şu şekilde kullanabilirsiniz:

docker compose version

Örneğin basit bir servis ayağa kaldırmak için bir klasörde compose.yaml oluşturup docker compose up -d komutuyla çalıştırabilirsiniz. Bu yöntem, yerel geliştirmede Nginx, Postgres, Redis gibi servisleri hızlıca yönetmek için oldukça pratik.

6) Performans ve dosya sistemi: projeyi nereye koymalı?

WSL 2’de performansı belirleyen en kritik detaylardan biri dosyaların konumudur. Projeyi Windows dosya sisteminde (örn. /mnt/c/...) tutmak mümkündür ama yoğun I/O yapan Node.js veya Python projelerinde yavaşlama görebilirsiniz. En iyi performans için projeyi WSL dosya sisteminde, örneğin ~/projects altında tutmak genellikle daha iyi sonuç verir.

7) Port yönlendirme ve erişim mantığı

Docker konteynerleri WSL içinde çalıştığı için portlar WSL ağı üzerinden yayınlanır. Windows 11’de çoğu senaryoda localhost erişimi otomatik çalışır; örneğin -p 8080:80 ile Nginx çalıştırdığınızda tarayıcıdan http://localhost:8080 ile erişebilirsiniz. Yine de bazı ağ senaryolarında WSL’in IP’sini öğrenmek gerekebilir: ip addr veya hostname -I iş görür.

8) Bu yaklaşımın artıları ve eksileri (kısa inceleme)

Artılar: Daha az arka plan bileşeni, daha düşük kaynak tüketimi, daha “Linux’a yakın” çalışma biçimi, lisans ve GUI bağımlılığının azalması.

Eksiler: Docker Desktop’taki bazı kolaylıklar (tek tıkla Kubernetes, görsel arayüz, otomatik entegrasyonlar) yoktur. Ayrıca WSL ve Linux ağ/dosya sistemi mantığına biraz daha hâkim olmanız gerekir.

Sonuç

Eğer amacınız Windows 11 üzerinde modern bir geliştirme ortamı kurarken Docker’ı daha kontrollü, daha hafif ve daha “geliştirici dostu” biçimde kullanmaksa, WSL 2 + Docker Engine yaklaşımı güçlü bir alternatiftir. Kurulumu tamamladıktan sonra en kritik iki noktayı aklınızda tutun: projeleri mümkünse WSL dosya sisteminde tutmak ve systemd ile Docker servisinin yönetimini düzgün yapmak. Bu sayede Docker Desktop’sız da günlük iş akışınızı sorunsuz şekilde sürdürebilirsiniz.