Teknik Detaylar

Docker Nedir?

← Teknik Detaylar
2021-01-06 ~ 2026-06-21 · 3 dk okuma
Docker Nedir?
Bu yazıyı yapay zekâ ile tartış
Sayfayı kopyala

💡 Özet (TL;DR):

  • Docker Nedir?: Uygulamaları ve bağımlılıklarını izole edilmiş, hafif ve taşınabilir konteynerler (containers) halinde paketlemeyi ve çalıştırmayı sağlayan açık kaynaklı bir teknolojidir.
  • Çalışma Mantığı: Ağır sanal makineler (VM) yerine ana işletim sisteminin çekirdeğini (kernel) paylaşarak çalışır; bu sayede milisaniyeler içinde başlar ve çok az sistem kaynağı tüketir.
  • Sık Yapılan Hata: Kubernetes, Docker'ın değil; Docker'ın içinde yerleşik olarak gelen Docker Swarm'ın rakibidir. Kubernetes, Docker tarafından paketlenen konteynerleri devasa ölçekte yöneten (orkestre eden) bir üst sistemdir.

Eğer Docker adını ilk defa duyduysanız, kısaca uygulamaları konteynerler (container) için paketlemek, dağıtmak ve çalıştırmak için kullanılan, sizin ve ekibinizin verimliliğini inanılmaz şekilde artıracak bir teknoloji olarak tanımlayabiliriz. Esasen konteyner teknolojisi Docker'a özel değildir; fakat Docker pratikliği, kullanım kolaylığı, güçlü desteği ve topluluğu ile alternatifleri arasında öne çıkmaktadır.


Sanal Makineler (VM) vs. Docker Konteynerleri

ÖzellikSanal Makineler (VM)Docker Konteynerleri
İşletim SistemiHer VM için ayrı, tam bir konuk işletim sistemi (Guest OS)Ana işletim sisteminin çekirdeğini (Kernel) paylaşır
BoyutGigabaytlarca (GB)Megabaytlarca (MB)
Başlangıç SüresiDakikalar sürerMilisaniyeler sürer
PerformansSanallaştırma katmanı (Hypervisor) nedeniyle kayıpYerel hıza yakın, doğrudan işletim sistemi performansı
ÖlçeklenebilirlikAynı sunucuda birkaç adet çalıştırılabilirAynı sunucuda yüzlerce çalıştırılabilir

Docker ve Konteyner Teknolojisi Nedir?

Docker, Linux konteyner teknolojisi (LXC) üzerine kurulmuş açık kaynaklı bir projedir. Docker 2013 yılında ilk yayınlandığında, daha sonra standart haline gelecek modern konteyner teknolojisinin de temellerini atmış oldu.

Konteynerler, geliştirdiğimiz yazılımları çalıştıkları ortamdan izole etmemizi sağlayan birimlerdir. Yerel bilgisayarımızda sorunsuz çalışan kodların, canlı sunucu ortamına taşındığında işletim sistemi sürümü veya kütüphane uyuşmazlığı gibi nedenlerle çıkardığı sorunlardan bizi kurtarırlar.

Docker'ın her ne kadar sanal makinelere benzer bir mantığı olsa da, onlardan farklı olarak bütün bir işletim sistemini sanal olarak oluşturmak yerine uygulamaların ana Linux çekirdeğinin (kernel) özelliklerini paylaşarak çalışmasını sağlar. Bu sayede çok daha az sistem kaynağı ile daha verimli işlem gücü elde edilir.

Her ne kadar Linux çekirdeğine ihtiyaç duysa da, geliştirme amaçlı olarak Windows ve macOS işletim sistemlerinde de Docker Desktop yardımıyla kolayca kullanılabilir. Windows üzerinde modern altyapı olarak WSL 2 (Windows Subsystem for Linux) kullanarak doğrudan çekirdek düzeyinde ve yüksek performansla çalışır. Üretim (production) ortamı için tavsiye edilen ise tabii ki doğrudan Linux tabanlı bir işletim sistemiyle birlikte kullanmaktır.


Docker Kimin İçindir? Kime Ne Fayda Sağlar?

Docker hem yazılım geliştiriciler (developers) hem de sistem/sunucu yöneticileri (sysadmins/DevOps) için büyük avantajlar sağlar:

  • Geliştiriciler İçin: "Bu kod bende çalışıyordu, canlı ortamda neden hata verdi?" veya "Canlı ortamda çalışması için sunucuya hangi kütüphaneleri kurmalıyım?" derdini tamamen ortadan kaldırır. Uygulama, geliştirildiği konteyner yapısıyla her yerde birebir aynı çalışır.
  • Sistem Yöneticileri İçin: Mevcut sunucu donanımını çok daha verimli kullanmayı, yüzlerce konteynerlik mikroservis mimarilerini kolayca yönetmeyi ve herhangi bir çökme durumunda sistemi saniyeler içinde ayağa kaldırmayı sağlar.

Nasıl Docker Öğrenirim?

Docker'ın çok kapsamlı resmi bir dokümantasyonu vardır. Başlangıç ve orta seviyede Docker öğrenmek için bu kaynak fazlasıyla yeterli olacaktır. Takıldığınız bir durum olursa çoğunlukla Docker topluluk forumlarında konunun daha önce sorulduğunu ve ayrıntılı olarak cevaplandığını göreceksiniz.

Bu yazıyla Docker'a giriş yaptıktan sonra kurulum ve orkestrasyon adımları için aşağıdaki hazırladığım rehberleri takip edebilirsiniz:

Docker'ı kavradığınızda bir sonraki adımınız, birden fazla sunucuyla bir küme (cluster) kurmanızı sağlayan Docker Swarm veya devasa ölçekli yapılar için Kubernetes öğrenmek olacaktır.

Gelecek yazılarda örnek konteyner kurulumları ve kendi Docker imajımızı (image) oluşturma gibi konuları pratik örneklerle ele alacağız. Yorumlarınızla deneyimlerinizi paylaşmayı unutmayın.

Bu Yazıda Yapılan Değişiklikler
  • 21.06.2026: Kubernetes'in Docker'ın değil, Docker Swarm'ın rakibi olduğu belirtilerek teknik yanılgı düzeltildi. Windows tarafındaki eski sanal makine bilgisi güncel WSL 2 mimarisiyle güncellendi. "Container" terimleri Türkçe standartlara ("Konteyner") uyarlandı. Klavye hataları (düşünemliyim -> düşünmeliyim vb.) düzeltildi. Sanal makine vs. Konteyner karşılaştırma tablosu ile özet bloğu eklendi. Telif uyarısı içeren görsel kredi satırı kaldırıldı.
  • 11.05.2022: Yazı özeti düzenlendi.