TR/EN
Blog

Docker Nedir? Windows, Linux ve macOS'a Docker Nasıl Kurulur?

Yayın tarihi: · 13 dk okuma

Yazılım dünyasının en meşhur cümlelerinden biri: "Ama benim bilgisayarımda çalışıyordu!" Uygulama geliştiricinin makinesinde sorunsuz çalışıyor, sunucuya gelince farklı bir kütüphane sürümü, eksik bir paket ya da farklı bir ayar yüzünden patlıyor. Docker tam olarak bu sorunu çözmek için var. Bu yazıda Docker nedir, ne işe yarar sorularını cevapladık ve ardından Docker'ı Linux, Windows ve macOS üzerine nasıl kuracağınızı adım adım anlattık.

Docker Nedir?

Docker, uygulamaları ihtiyaç duydukları herşeyle birlikte (kod, çalışma ortamı, kütüphaneler, ayarlar) container (konteyner) adı verilen paketlere koyup her yerde aynı şekilde çalıştırmanızı sağlayan açık kaynak bir platform.

Adını da buradan alıyor: limanlardaki yük konteynerlerini düşünün. İçinde ne olursa olsun konteynerin ölçüleri standart; gemiye, trene, kamyona aynı şekilde yükleniyor. Docker container'ları da öyle: içinde Node.js, Python yada PHP olsun, geliştiricinin laptopunda, test sunucusunda ve canlı sunucuda birebir aynı şekilde çalışıyor.

Docker'ın Temel Kavramları

KavramNe demek?
Image (imaj)Uygulamanın ve ortamının hazır, salt okunur paketi. Bir kalıp gibi düşünebilirsiniz.
ContainerBir imajdan başlatılmış, çalışan örnek. Aynı imajdan istediğiniz kadar container açabilirsiniz.
Dockerfileİmajın nasıl oluşturulacağını adım adım tarif eden metin dosyası.
Registry / Docker Hubİmajların saklandığı ve paylaşıldığı depo. Docker Hub en bilinen açık deposu.
VolumeContainer silinse bile kaybolmayan kalıcı veri alanı (veritabanı dosyaları gibi).
NetworkContainer'ların birbiriyle konuşmasını sağlayan sanal ağ.
Docker ComposeBirden fazla container'ı (ör. uygulama + veritabanı) tek bir dosyayla birlikte yönetme aracı.

Container ile Sanal Makine Arasındaki Fark

İkisi de izolasyon sağlıyor ama çalışma şekilleri çok farklı. Sanal makine kendi işletim sistemiyle birlikte koca bir bilgisayarı taklit ediyor; container ise ana makinenin çekirdeğini paylaşıp sadece uygulamayı izole ediyor.

Container (Docker)Sanal makine
İçerdiğiUygulama + kütüphanelerTam bir işletim sistemi + uygulama
BoyutGenelde onlarca–yüzlerce MBGenelde birkaç GB
Açılış süresiSaniyelerDakikalar
Kaynak kullanımıÇok düşük ek yükHer VM için ayrı işletim sistemi yükü
İzolasyonSüreç seviyesinde (çekirdek paylaşılır)Donanım seviyesinde, daha güçlü
Tipik kullanımUygulama paketleme, mikroservis, CI/CDFarklı işletim sistemleri, tam izolasyon

Not: İkisi rakip değil. Çoğu zaman Docker zaten bir sanal sunucunun içinde çalışıyor.

Docker Ne İşe Yarar?

  • Aynı ortam her yerde: Geliştirme, test ve canlı ortam birebir aynı oluyor; "bende çalışıyordu" dönemi bitiyor.
  • Hızlı kurulum: Yeni bir geliştirici projeyi tek komutla ayağa kaldırabiliyor, veritabanı kurmakla uğraşmıyor.
  • CI/CD: Her commit'te aynı imaj build edilip test ediliyor ve aynı imaj canlıya çıkıyor.
  • Mikroservisler: Her servis kendi container'ında, birbirini etkilemeden çalışıyor.
  • Kaynak verimliliği: Aynı sunucuda birbirinden izole çok sayıda uygulama çalıştırabiliyorsunuz.

Platformlara Göre Docker

Kuruluma geçmeden önce önemli bir detay: Docker container'ları Linux çekirdeği üzerinde çalışıyor. Bu yüzden Linux'ta Docker doğrudan çalışırken, Windows ve macOS'ta arka planda hafif bir Linux sanal makinesi kullanılıyor.

PlatformNe kurulur?Nasıl çalışır?Not
LinuxDocker EngineDoğrudan, en yüksek performansSunucular için standart; açık kaynak ve ücretsiz
Windows 10/11Docker DesktopWSL 2 (Linux alt sistemi) üzerindenDonanım sanallaştırma açık olmalı
macOSDocker DesktopArka planda hafif bir Linux VMApple Silicon (M serisi) ve Intel için ayrı sürüm
Lisans notu: Linux'taki Docker Engine açık kaynak ve ücretsiz. Docker Desktop ise kişisel kullanım, eğitim ve küçük işletmeler için ücretsiz; belirli bir çalışan sayısı veya ciroyu aşan şirketlerde ücretli abonelik gerektiriyor. Kurumsal kullanımda güncel lisans koşullarını kontrol edin.

Linux'a Docker Kurulumu (Ubuntu)

Ubuntu'nun kendi deposundaki paket bazen eski kalabiliyor; en doğrusu Docker'ın resmi deposundan kurmak. Önce depoyu ekleyip Docker'ı kuralım:

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

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

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

Kurulumu test edip kullanıcınıza yetki verelim:

sudo docker run hello-world

# her seferinde sudo yazmamak için kullanıcınızı docker grubuna ekleyin
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world

Ekranda "Hello from Docker!" mesajını görüyorsanız kurulum tamam. Debian, Fedora veya diğer dağıtımlarda adımlar benzer; sadece depo adresi ve paket yöneticisi değişiyor.

Hızlı yol: Test ortamları için Docker'ın resmi kurulum betiği tüm bu adımları tek seferde yapıyor. Üretim sunucularında yukarıdaki elle kurulum daha kontrollü olduğu için önerilir:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Windows'a Docker Kurulumu

Gereksinimler: 64-bit Windows 10 veya 11, BIOS/UEFI'de donanım sanallaştırmanın (Intel VT-x / AMD-V) açık olması ve en az 4 GB RAM (rahat kullanım için 8 GB ve üzeri).

  1. WSL 2'yi kurun: PowerShell'i yönetici olarak açıp şu komutu çalıştırın, ardından bilgisayarı yeniden başlatın:
wsl --install
# bilgisayarı yeniden başlattıktan sonra güncel olduğundan emin olun
wsl --update
  1. Docker Desktop'ı indirin: docker.com adresinden Windows için Docker Desktop kurulum dosyasını indirin. İsterseniz winget ile de kurabilirsiniz:
winget install -e --id Docker.DockerDesktop
  1. Kurulumu tamamlayın: Kurulum sırasında "Use WSL 2 instead of Hyper-V" seçeneğinin işaretli olduğundan emin olun. Kurulum bitince oturumu kapatıp açmanız istenebilir.
  2. Docker Desktop'ı başlatın: Sağ alt köşedeki balina simgesi sabit durduğunda Docker çalışıyor demektir.
  3. Test edin: PowerShell veya Windows Terminal'de:
docker version
docker run hello-world

macOS'a Docker Kurulumu

Gereksinimler: macOS'un güncel sürümlerinden biri ve en az 4 GB RAM. İlk ve en önemli adım: Mac'inizin işlemcisini öğrenin (Apple menüsü → Bu Mac Hakkında). Apple Silicon (M1, M2, M3, M4...) ya da Intel için ayrı kurulum dosyaları var.

  1. İndirin: docker.com'dan işlemcinize uygun Docker Desktop .dmg dosyasını indirin.
  2. Kurun: Dosyayı açıp Docker simgesini Uygulamalar (Applications) klasörüne sürükleyin.
  3. İlk açılış: Docker'ı Uygulamalar'dan açın, istenen izinleri onaylayın. Üst menü çubuğundaki balina simgesi sabitlendiğinde Docker hazır.

Homebrew kullanıyorsanız tek komutla da kurabilirsiniz:

brew install --cask docker-desktop

Ardından Terminal'de test edin:

docker version
docker run hello-world

Apple Silicon Mac'lerde bazı eski imajlar sadece Intel (amd64) için hazırlanmış olabilir; Docker bunları emülasyonla çalıştırır ama biraz daha yavaş olur. Mümkünse arm64 destekli imajları tercih edin.

İlk Adımlar: Temel Docker Komutları

KomutNe yapar?
docker run -d -p 8080:80 nginxnginx imajından bir container başlatır, 8080 portuna bağlar
docker psÇalışan container'ları listeler (-a ile hepsini)
docker imagesBilgisayardaki imajları listeler
docker pull postgres:17Bir imajı indirir
docker build -t uygulamam .Bulunduğunuz klasördeki Dockerfile'dan imaj oluşturur
docker logs -f <container>Container loglarını canlı izler
docker exec -it <container> shÇalışan container'ın içine girer
docker stop <container> / docker rm <container>Container'ı durdurur / siler
docker compose up -ddocker-compose.yml'deki tüm servisleri başlatır

Basit Bir Dockerfile Örneği

Bir Node.js uygulamasını paketleyen örnek Dockerfile:

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

İmajı oluşturup çalıştırmak için:

docker build -t uygulamam .
docker run -d -p 3000:3000 --name uygulamam uygulamam

Docker Compose ile Uygulama + Veritabanı

Gerçek projelerde genelde birden fazla servis olur. docker-compose.yml ile uygulamayı ve veritabanını birlikte tanımlayıp tek komutla (docker compose up -d) ayağa kaldırabilirsiniz:

services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: ornek-sifre
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Örnekteki şifreyi gerçek projelerde mutlaka değiştirin ve bir .env dosyasında tutun.

Docker ve Kubernetes

Docker tek bir sunucuda container çalıştırmak için harika. Ama onlarca container'ı birden fazla sunucuda otomatik ölçeklendirmek, çökenleri yeniden başlatmak ve kesintisiz güncellemek gerektiğinde Kubernetes devreye giriyor. Kısacası Docker ile imajınızı hazırlıyorsunuz, Kubernetes ile o imajları büyük ölçekte yönetiyorsunuz. Detaylar için Kubernetes nedir yazımıza bakabilirsiniz; hazır bir cluster ile denemek isterseniz Kubernetes Server paketlerimiz var.

Docker'ı Sunucuda Çalıştırmak

Bilgisayarınızda geliştirdiğiniz uygulamayı yayına almak için Docker'ın kurulu olduğu bir sunucuya ihtiyacınız var. VECDC Developer VDS paketleri Docker kurulu olarak teslim ediliyor; aylık $6'dan başlıyor ve otomatik kurulum sayesinde yaklaşık 5 dakikada hazır. Sunucuya bağlanıp docker compose up -d demeniz yeterli. Docker'ı kendiniz kurmak isterseniz yukarıdaki Linux adımları standart sanal sunucularımızda da birebir çalışıyor. Build ve deploy süreçlerini otomatikleştirmek için CI/CD danışmanlık hizmetimize de göz atabilirsiniz.

Sık Karşılaşılan Sorunlar

Hata / belirtiSebepÇözüm
permission denied ... docker.sock (Linux)Kullanıcı docker grubunda değilsudo usermod -aG docker $USER, sonra oturumu kapatıp açın
Docker Desktop açılmıyor, WSL hatası (Windows)Sanallaştırma kapalı veya WSL güncel değilBIOS'ta sanallaştırmayı açın, wsl --update
port is already allocatedPort başka bir uygulama veya container tarafından kullanılıyorFarklı bir port kullanın (ör. -p 8081:80) ya da diğerini durdurun
Disk hızla doluyorEski imaj, container ve build önbellekleri birikmişdocker system prune (dikkatli kullanın)
Cannot connect to the Docker daemonDocker servisi / Docker Desktop çalışmıyorLinux'ta sudo systemctl start docker, Windows/Mac'te Docker Desktop'ı açın

Sık Sorulan Sorular

Docker ücretsiz mi?

Linux'ta kullanılan Docker Engine açık kaynak ve ücretsizdir. Windows ve macOS'taki Docker Desktop ise kişisel kullanım, eğitim ve küçük işletmeler için ücretsiz; belirli bir büyüklüğü aşan şirketler için ücretli abonelik gerektirir.

Docker ile sanal makine arasındaki fark nedir?

Sanal makine kendi işletim sistemiyle tam bir bilgisayarı taklit eder; container ise ana makinenin çekirdeğini paylaşıp sadece uygulamayı izole eder. Bu yüzden container'lar çok daha küçük, saniyeler içinde açılır ve daha az kaynak kullanır.

Windows'ta Docker için Docker Desktop şart mı?

Windows'ta en kolay ve yaygın yol Docker Desktop'tır. İleri seviye kullanıcılar WSL 2 içine kurdukları bir Linux dağıtımına doğrudan Docker Engine da kurabilir, ancak bu daha fazla elle ayar gerektirir.

Docker öğrenmek zor mu?

Temel kullanım için birkaç kavramı (image, container, Dockerfile, volume) ve bir avuç komutu öğrenmek yeterli; çoğu kişi bir iki gün içinde kendi uygulamasını container'a çevirebilir. Ağ, güvenlik ve üretim ortamı detayları zamanla gelir.

Kısacası

Docker, uygulamaları bağımlılıklarıyla birlikte paketleyip her yerde aynı şekilde çalıştırmanızı sağlıyor. Linux'ta doğrudan Docker Engine, Windows ve macOS'ta ise Docker Desktop ile birkaç dakikada kurulup kullanılmaya hazır oluyor. Bir kere alıştığınızda yazılım geliştirme ve yayına alma süreçleriniz çok daha sade hale geliyor. Kurulumda takıldığınız birşey olursa bize yazın.

Sanal Sunucunuz 5 Dakikada Hazır

Adanmış kaynaklı NVMe sanal sunucu paketleri aylık $6'dan başlıyor.

Paketleri İncele →