‹ Tüm yazılar
Altyapı·10 Ağu 2026·12 dk okuma

Docker Nedir? VM ile Farkı

Docker Nedir sorusu özellikle yazılım geliştirme, bulut altyapısı, firewall arkasındaki servis yönetimi ve DevOps süreçleriyle ilgilenen herkesin karşısına çıkıyor. Çünkü Docker, uygulamaları “benim bilgisayarımda çalışıyordu” probleminden kurtarıp taşınabilir, izole ve yönetilebilir hale getiriyor.

Docker Nedir? VM ile Farkı

Docker Nedir sorusu özellikle yazılım geliştirme, bulut altyapısı, firewall arkasındaki servis yönetimi ve DevOps süreçleriyle ilgilenen herkesin karşısına çıkıyor. Çünkü Docker, uygulamaları “benim bilgisayarımda çalışıyordu” probleminden kurtarıp taşınabilir, izole ve yönetilebilir hale getiriyor.

Docker Nedir

Docker, uygulamaları ve bu uygulamaların ihtiyaç duyduğu bağımlılıkları container adı verilen izole paketler içinde çalıştırmaya yarayan bir platformdur. Bir uygulamanın farklı bilgisayar, sunucu veya bulut ortamlarında aynı şekilde çalışmasını sağlar.

Docker’ı basitçe şöyle düşünebilirsin: Uygulaman, çalışma ortamı, kütüphaneler, konfigürasyonlar ve bağımlılıklar tek bir standart yapıya alınır. Bu yapı başka bir makineye taşındığında uygulama genellikle ek kurulum karmaşası olmadan çalışır.

Özellikle backend servisleri, mikroservis mimarileri, test ortamları, CI/CD süreçleri ve bulut altyapılarında Docker ciddi pratiklik sağlar. Firewall, reverse proxy, veritabanı, cache ve uygulama sunucularını ayrı container’larda yönetmek operasyonel açıdan oldukça temiz bir model oluşturur.

İpucu: Docker, sanal makine değildir. Container teknolojisini kullanır. Bu yüzden genellikle daha hızlı başlar, daha az kaynak tüketir ve dağıtımı daha pratiktir.

Docker Nedir Ne İşe Yarar

Docker, uygulamayı çalıştırmak için gereken ortamı standartlaştırır. Böylece geliştirici bilgisayarında çalışan bir servis, test sunucusunda veya production ortamında da daha öngörülebilir şekilde çalışır.

Docker’ın temel kullanım faydaları şunlardır:

  • Uygulamayı bağımlılıklarıyla birlikte paketlemek
  • Geliştirme ve production ortamlarını birbirine yaklaştırmak
  • Servisleri izole çalıştırmak
  • Hızlı test ortamı kurmak
  • Mikroservis mimarisini kolaylaştırmak
  • CI/CD pipeline süreçlerini sadeleştirmek
  • Sunucu üzerinde port, volume ve network yönetimini düzenli hale getirmek
Kullanım Alanı Docker’ın Sağladığı Fayda Örnek
Yazılım geliştirme Ortam farklarını azaltır Node.js API container
Test süreçleri Hızlı ve temiz test ortamı sağlar Geçici PostgreSQL container
Bulut altyapısı Taşınabilir deployment sunar Container tabanlı servis
DevOps CI/CD entegrasyonunu kolaylaştırır Git sonrası otomatik build
Güvenlik izolasyonu Servisleri birbirinden ayırır Ayrı network’te çalışan veritabanı

Docker Nedir Nasıl Kullanılır

Docker, genellikle Dockerfile, image ve container mantığıyla kullanılır. Önce uygulamanın nasıl paketleneceği tanımlanır, ardından image oluşturulur ve bu image üzerinden container çalıştırılır.

Temel kullanım akışı şöyledir:

  1. Uygulama için bir Dockerfile hazırlanır.
  2. docker build komutuyla image oluşturulur.
  3. docker run komutuyla container başlatılır.
  4. Gerekirse port, volume ve environment değişkenleri verilir.
  5. Log, restart policy ve network ayarları yönetilir.

Basit bir örnek:

docker build -t benim-uygulamam .
docker run -d -p 8080:80 benim-uygulamam

Bu komutlarla uygulama image haline getirilir ve 8080 portundan erişilebilir şekilde çalıştırılır.

Uyarı: Docker kullanırken sadece container’ı çalıştırmak yeterli değildir. Log yönetimi, volume kalıcılığı, network izolasyonu ve güvenlik ayarları da planlanmalıdır.

Docker Nedir Yazılım

Yazılım tarafında Docker, uygulama geliştirme ve dağıtım sürecini standartlaştıran bir araçtır. Geliştirici, uygulamanın hangi işletim sisteminde, hangi runtime ile ve hangi bağımlılıklarla çalışacağını tanımlayabilir.

Örneğin bir PHP, Python, Go, Java veya Node.js projesinde herkesin lokal bilgisayarına aynı sürümleri kurması gerekmez. Proje Docker ile tanımlanırsa ekip üyeleri aynı container ortamını kullanabilir.

Docker Nedir Yazılım Geliştirmede Neden Önemli

Yazılım projelerinde en sık yaşanan sorunlardan biri ortam farkıdır. Bir geliştiricide çalışan servis, başka bir geliştiricide farklı kütüphane sürümü nedeniyle hata verebilir. Docker bu farkı azaltır.

Sorun Docker Olmadan Docker İle
Farklı runtime sürümü Manuel kurulum gerekir Image içinde sabitlenir
Bağımlılık çakışması Sistem geneline yayılır Container içinde izole kalır
Yeni geliştirici kurulumu Uzun sürebilir Tek komutla başlatılabilir
Test veritabanı Elle kurulur Container olarak ayağa kalkar

Docker Nedir Nasıl Kurulur

Docker kurulumu işletim sistemine göre değişir. Windows ve macOS tarafında genellikle Docker Desktop tercih edilirken, Linux sunucularda Docker Engine kurulumu daha yaygındır.

Kurulumdan önce işletim sistemi uyumluluğu, sanallaştırma desteği ve kullanıcı yetkileri kontrol edilmelidir. Production Linux sunucularda Docker’ı resmi paket deposu üzerinden kurmak daha sağlıklı olur.

Genel kurulum mantığı:

  • Windows/macOS için Docker Desktop indirilir.
  • Linux için Docker Engine kurulur.
  • Kurulum sonrası Docker servisinin çalıştığı kontrol edilir.
  • docker version ve docker run hello-world ile doğrulama yapılır.
docker version
docker run hello-world

Docker Nedir Hangi Amaçla Kullanılır

Docker, uygulamaları taşınabilir ve izole çalıştırmak için kullanılır. En yaygın amacı geliştirme, test, deployment ve mikroservis yönetimini daha kontrollü hale getirmektir.

Docker’ın sık kullanıldığı amaçlar:

  • API servislerini paketlemek
  • Veritabanı, Redis, RabbitMQ gibi servisleri hızlı başlatmak
  • Reverse proxy arkasında uygulama çalıştırmak
  • CI/CD süreçlerinde otomatik test yapmak
  • Bulut ortamına taşınabilir uygulama hazırlamak
  • Mikroservisleri ayrı ayrı ölçeklemek
Amaç Uygunluk Not
Lokal geliştirme Yüksek Ortam standardı sağlar
Production deployment Yüksek Doğru yapılandırma gerekir
Masaüstü uygulaması çalıştırma Orta Her senaryo için ideal değildir
Tek seferlik script çalıştırma Yüksek İzole ve temizdir
Kernel seviyesi izolasyon Düşük VM kadar güçlü izolasyon sunmaz

Docker Nedir Nasıl Çalışır

Docker, host işletim sisteminin kernel’ini kullanarak container’ları izole biçimde çalıştırır. Container’lar kendi dosya sistemi, network ayarı, process alanı ve bağımlılıklarıyla çalışır; fakat tam bir işletim sistemi başlatmaz.

Docker’ın çalışma yapısında üç temel kavram vardır:

  • Image: Uygulamanın çalışması için gereken paketlenmiş şablon.
  • Container: Image’ın çalışan halidir.
  • Registry: Image’ların saklandığı depodur. Docker Hub buna örnektir.

Docker, Linux üzerinde namespaces ve cgroups gibi kernel özelliklerinden yararlanır. Bu sayede process izolasyonu ve kaynak sınırlandırması yapabilir.

Image ve Container Farkı

Kavram Açıklama Durum
Image Çalıştırılabilir paket şablonu Pasif
Container Image’dan başlatılmış çalışan ortam Aktif
Dockerfile Image üretim tarifidir Kaynak tanım
Volume Kalıcı veri alanıdır Harici/bağlı
Network Container iletişim katmanıdır Yapılandırılabilir

Docker Desktop Nedir

Docker Desktop, Windows ve macOS kullanıcıları için Docker kullanımını kolaylaştıran masaüstü uygulamasıdır. Docker Engine, CLI, Docker Compose ve grafiksel yönetim özelliklerini tek pakette sunar.

Docker Desktop özellikle lokal geliştirme ortamlarında pratiktir. Container loglarını görmek, çalışan servisleri izlemek, image ve volume yönetmek için grafik arayüz sağlar.

Ancak sunucu ortamlarında genellikle Docker Desktop kullanılmaz. Linux production sistemlerde Docker Engine veya container runtime tercih edilir.

Docker Compose Nedir

Docker Compose, birden fazla container’ı tek bir YAML dosyasıyla tanımlayıp birlikte çalıştırmaya yarayan araçtır. Özellikle uygulama, veritabanı, cache ve proxy gibi birden fazla servisin aynı projede yönetilmesini kolaylaştırır.

Örnek bir senaryoda backend, PostgreSQL ve Redis ayrı container’lar olarak tanımlanabilir. Tüm servisler tek komutla başlatılabilir:

docker compose up -d

Basit yapı örneği:

services:
  app:
    image: benim-uygulamam
    ports:
      - "8080:80"
  redis:
    image: redis:alpine
Docker Run Docker Compose
Tek container için pratiktir Çoklu servis için uygundur
Komutlar uzayabilir YAML dosyasıyla okunabilir olur
Geçici kullanımda hızlıdır Proje standardı oluşturur
Bağımlılık yönetimi sınırlıdır Servis ilişkileri tanımlanabilir

Docker Ücretsiz Mi

Docker’ın bireysel kullanım, küçük ölçekli projeler ve açık kaynak geliştirme gibi senaryolarda ücretsiz seçenekleri vardır. Ancak Docker Desktop için şirket büyüklüğü ve kullanım modeline göre lisans koşulları değişebilir.

Kişisel blog, bireysel geliştirme ve öğrenme amaçlı kullanımda çoğu kullanıcı Docker’ı ücretsiz şekilde kullanır. Fakat kurumsal kullanımda Docker’ın güncel lisans şartları mutlaka resmi sitesinden kontrol edilmelidir.

Uyarı: Lisans koşulları zaman içinde değişebilir. Ticari kullanımda varsayımla hareket etmek yerine Docker’ın resmi lisans sayfasını kontrol etmek daha güvenlidir.

Docker Nasıl Kurulur

Docker kurulumunda en temiz yaklaşım, kullanılan işletim sistemine göre resmi kurulum dokümantasyonunu takip etmektir. Windows ve macOS’ta Docker Desktop, Linux’ta ise Docker Engine kurulumu tercih edilir.

Kurulum sonrası şu kontroller yapılmalıdır:

docker --version
docker compose version
docker run hello-world

Linux sunucuda ayrıca kullanıcının Docker grubuna eklenmesi gerekebilir. Ancak production ortamında Docker socket erişiminin güçlü yetki verdiği unutulmamalıdır.

Docker Nerelerde Kullanılır

Docker; yazılım geliştirme, test, staging, production, eğitim, laboratuvar ortamı ve bulut tabanlı servislerde kullanılır. Özellikle hızlı kurulum ve taşınabilirlik gereken yapılarda oldukça etkilidir.

Aktif projelerde Docker’ın en görünür faydası, servislerin net ayrılmasıdır. Örneğin firewall arkasında çalışan bir API, ayrı bir network’teki veritabanına erişebilir; dış dünyaya sadece reverse proxy açılabilir.

Bu yapı hem yönetimi sadeleştirir hem de saldırı yüzeyini azaltmaya yardımcı olur. Elbette Docker tek başına güvenlik çözümü değildir; doğru network, image güvenliği, secret yönetimi ve güncelleme stratejisi gerekir.

Dokker Ne Demek

“Dokker” ifadesi genellikle Docker kelimesinin yanlış yazılmış halidir. Teknik olarak doğru kullanım “Docker”dır ve container tabanlı uygulama çalıştırma platformunu ifade eder.

Arama motorlarında “dokker nedir” şeklinde arama yapan kullanıcılar çoğunlukla Docker’ı öğrenmek ister. Bu nedenle teknik doküman, komut ve paket adlarında mutlaka “Docker” yazımı kullanılmalıdır.

Kubernetes Nedir

Kubernetes, container’ları büyük ölçekte yönetmek, dağıtmak, ölçeklemek ve izlemek için kullanılan bir orkestrasyon platformudur. Docker tekil veya sınırlı container yönetiminde pratikken, Kubernetes çok sayıda servis ve node içeren yapılarda devreye girer.

Docker uygulamayı container haline getirir; Kubernetes ise bu container’ların hangi sunucuda, kaç kopya, hangi network ve hangi sağlık kontrolüyle çalışacağını yönetir.

Özellik Docker Kubernetes
Temel amaç Container oluşturma ve çalıştırma Container orkestrasyonu
Kullanım seviyesi Geliştirme ve küçük/orta dağıtım Büyük ölçekli altyapı
Öğrenme eğrisi Daha kolay Daha karmaşık
Ölçekleme Manuel veya sınırlı Otomatik ve gelişmiş
Servis yönetimi Compose ile temel seviye Service, Ingress, Deployment

Docker İndir

Docker indirmek için en güvenli yol resmi Docker web sitesini kullanmaktır. Windows ve macOS kullanıcıları Docker Desktop paketini, Linux kullanıcıları ise dağıtımlarına uygun Docker Engine kurulum adımlarını tercih etmelidir.

Üçüncü taraf indirme sitelerinden uzak durmak gerekir. Docker gibi sistem seviyesinde çalışan araçlar, güvenilmeyen kaynaklardan indirildiğinde ciddi güvenlik riski oluşturabilir.

Docker Nedir Medium

“Docker Nedir Medium” araması genellikle sade anlatımlı Docker rehberlerine ulaşmak için yapılır. Medium üzerinde birçok giriş seviyesi yazı bulunur; ancak teknik doğruluk için resmi dokümantasyon ve pratik testlerle ilerlemek daha sağlıklıdır.

Kişisel bloglarda Docker anlatırken sadece tanım vermek yerine gerçek kullanım deneyimi eklemek fark yaratır. Örneğin firewall arkasında çalışan servisler, reverse proxy düzeni, volume yedekleme ve container log yönetimi gibi konular okuyucuya daha fazla değer verir.

Docker İle VM Farkı Nedir

Docker ile VM arasındaki temel fark, Docker’ın host işletim sistemi kernel’ini paylaşan container’lar çalıştırması; VM’in ise kendi işletim sistemini sanallaştırarak çalışmasıdır. Bu nedenle Docker daha hafif, VM ise daha güçlü izolasyon sunar.

VM yani sanal makine, hypervisor üzerinde tam bir işletim sistemi çalıştırır. Docker container ise uygulama ve bağımlılıklarını izole eder ama tam bir işletim sistemi başlatmaz.

Kriter Docker Container Sanal Makine
Başlama süresi Saniyeler Dakikalar olabilir
Kaynak tüketimi Daha düşük Daha yüksek
İzolasyon Process seviyesinde OS seviyesinde daha güçlü
Taşınabilirlik Çok yüksek Orta-yüksek
Kullanım alanı Uygulama paketleme Tam sistem sanallaştırma
Kernel Host kernel paylaşılır Ayrı OS kernel kullanır
Yönetim Image/container odaklı VM imajı ve OS yönetimi

Docker, uygulama dağıtımı için çok pratiktir; fakat her senaryoda VM’in yerini almaz. Farklı işletim sistemi kernel’i gerektiren, yüksek izolasyon isteyen veya legacy sistem çalıştıran yapılarda VM daha doğru olabilir.

Bilgi kutusu: Ben kendi projelerimde Docker’ı özellikle geliştirme ortamlarını sadeleştirmek, servisleri izole etmek ve bulut altyapısına daha kontrollü dağıtım yapmak için kullanışlı buluyorum. Ancak kritik servislerde container güvenliği, image güncelliği ve network kurgusu mutlaka ayrıca ele alınmalı.

Sıkça Sorulan Sorular

Docker tam olarak ne işe yarar?

Docker, uygulamaların bağımlılıklarıyla birlikte izole ve taşınabilir şekilde çalışmasını sağlar. Geliştirici bilgisayarında çalışan bir uygulamanın test veya production ortamında da benzer davranmasını kolaylaştırır. Özellikle farklı yazılım sürümleri, veritabanı servisleri ve sistem kütüphaneleriyle uğraşmayı azaltır. Tek başına deployment stratejisi değildir; log, güvenlik, yedekleme ve güncelleme süreçleriyle birlikte planlanmalıdır.

Docker öğrenmek zor mu?

Docker’ın temel kullanımı zor değildir; image, container, port, volume ve Dockerfile kavramları öğrenildiğinde günlük işlerde rahatça kullanılabilir. Zorlaşan kısım production kalitesinde yapı kurmaktır. Network izolasyonu, secret yönetimi, image güvenliği, CI/CD entegrasyonu ve monitoring gibi konular tecrübe ister. Başlangıç için küçük bir web uygulamasını container haline getirmek iyi bir pratiktir.

Docker ile sanal makine aynı şey mi?

Hayır, Docker ile sanal makine aynı şey değildir. Sanal makine kendi işletim sistemini çalıştırır; Docker container ise host işletim sisteminin kernel’ini paylaşır. Bu yüzden container’lar daha hafif ve hızlıdır. Ancak VM’ler daha güçlü izolasyon sağlar. Uygulama paketleme ve mikroservislerde Docker daha pratikken, tam işletim sistemi izolasyonu gereken durumlarda VM daha uygundur.

Docker production ortamında kullanılabilir mi?

Evet, Docker production ortamında kullanılabilir; ancak doğru yapılandırma gerekir. Container’ların otomatik yeniden başlatılması, log yönetimi, güvenli image kullanımı, güncelleme planı, volume yedekleri ve network kısıtlamaları düşünülmelidir. Küçük projelerde Docker Compose yeterli olabilir. Daha büyük yapılarda Kubernetes veya yönetilen container servisleri tercih edilebilir. Docker’ı production’da kullanmak, sadece docker run komutu çalıştırmaktan ibaret değildir.

Docker Compose ne zaman kullanılmalı?

Docker Compose, bir projede birden fazla servisi birlikte çalıştırmak gerektiğinde kullanılmalıdır. Örneğin web uygulaması, veritabanı, Redis ve reverse proxy aynı proje içinde yer alıyorsa Compose dosyası yönetimi kolaylaştırır. Tek komutla tüm servisleri başlatabilir, durdurabilir ve yapılandırabilirsin. Lokal geliştirme ve küçük ölçekli sunucu dağıtımlarında oldukça pratiktir. Büyük ölçekli yapılarda orkestrasyon ihtiyacı doğabilir.

Docker Desktop şart mı?

Docker Desktop şart değildir. Windows ve macOS kullanıcıları için işleri kolaylaştırır; çünkü Docker Engine, Compose ve grafik arayüzü birlikte sunar. Linux sunucularda genellikle Docker Desktop kullanılmaz, doğrudan Docker Engine kurulur. Eğer kişisel bilgisayarda geliştirme yapıyorsan Docker Desktop pratik bir seçimdir. Sunucu tarafında daha yalın, servis odaklı kurulum tercih edilmelidir.

Docker güvenli mi?

Docker doğru yapılandırıldığında güvenli bir çalışma modeli sunabilir, fakat varsayılan haliyle tüm güvenlik sorunlarını çözmez. Güvenilmeyen image kullanmak, container’ı root yetkisiyle çalıştırmak, Docker socket’i dışa açmak veya gereksiz port yayınlamak risklidir. Güvenlik için minimal image, güncel paketler, sınırlı yetkiler, private network ve düzenli tarama tercih edilmelidir. Firewall kuralları da container mimarisine göre düzenlenmelidir.

Docker hangi dillerle kullanılır?

Docker belirli bir programlama diline bağlı değildir. Node.js, Python, PHP, Java, Go, .NET, Ruby ve birçok farklı teknolojiyle kullanılabilir. Önemli olan uygulamanın çalışma ortamının Dockerfile içinde doğru tanımlanmasıdır. Örneğin Python için uygun base image seçilir, bağımlılıklar yüklenir ve uygulama başlatma komutu yazılır. Bu esneklik Docker’ı yazılım ekipleri için güçlü hale getirir.

Kubernetes kullanmak için Docker bilmek gerekir mi?

Kubernetes öğrenmek için container mantığını bilmek gerekir; Docker bu mantığı öğrenmek için iyi bir başlangıçtır. Kubernetes artık farklı container runtime’larla çalışabilse de image, container, registry ve port kavramları aynıdır. Docker bilmeden Kubernetes’e başlamak mümkündür ama pratikte zorlayıcı olur. Önce Docker ve Docker Compose ile temel servis yönetimini öğrenmek daha sağlıklı bir yol sağlar.

Docker image nedir?

Docker image, bir uygulamanın çalışması için gereken dosyaları, bağımlılıkları ve komutları içeren şablondur. Container ise bu image’ın çalışan halidir. Aynı image’dan birden fazla container oluşturulabilir. Image’lar Dockerfile ile üretilebilir veya Docker Hub gibi registry’lerden indirilebilir. Production ortamında kullanılan image’ların kaynağı, sürümü ve güvenlik durumu mutlaka kontrol edilmelidir.

İlgili İçerikler

  • Docker Compose ile Çoklu Servis Yönetimi
  • Reverse Proxy Nedir ve Nasıl Çalışır?
  • Kubernetes Nedir, Ne Zaman Kullanılmalı?
  • Bulut Altyapısında Container Güvenliği
  • Linux Sunucuda Firewall ve Docker Network Yönetimi

Docker, yazılım geliştirme ve altyapı yönetimini sadeleştiren güçlü bir araç; fakat doğru kullanıldığında değer üretir. dogus.net.tr üzerinde firewall, bulut altyapısı ve yazılım geliştirme deneyimlerimi paylaşırken Docker gibi araçları yalnızca teorik değil, sahadaki karşılıklarıyla ele almaya devam edeceğim.

Doğuş Şekerci
Doğuş Şekerci
Kurucu · Bulut & Ağ Altyapısı · Teknik Lider
in GH IG

İlginizi Çekebilir

Proxmox Nedir? Kurulum Rehberi
Altyapı

Proxmox Nedir? Kurulum Rehberi

Linux Log Dosyaları Rehberi
Altyapı

Linux Log Dosyaları Rehberi

Zero Trust Mimarisi Nedir?
Altyapı

Zero Trust Mimarisi Nedir?

Yorumlar (0)

Yorum yap
doğrulama görseli
Henüz yorum yok — ilk yorumu sen yaz.