WordPress, yazılım ve IT üzerine notlar
Anasayfa » Yazılım » Docker'ı neden ve ne zaman kullanmalı? Abartmadan bir giriş

Docker'ı neden ve ne zaman kullanmalı? Abartmadan bir giriş

İçindekiler
  1. Konteyner nedir, ne değildir?
  2. Hangi sorunları çözer?
  3. Basit bir örnek
  4. Sık yapılan hatalar
  5. Ne zaman gereksiz?
  6. Başlamak için öneri

Docker hakkındaki yazıların çoğu ya onu her derde deva gibi anlatıyor ya da hiç anlatmıyor. Ben ortada bir yerden başlayacağım: Docker'ın ne olduğundan, hangi sorunu gerçekten çözdüğünden ve ne zaman gereksiz bir katman olduğundan.

Konteyner nedir, ne değildir?

Konteyner, bir uygulamayı ve ihtiyaç duyduğu her şeyi (kütüphaneler, belirli bir PHP ya da Node sürümü, sistem paketleri) bir arada paketleyip, ana sistemden yalıtılmış bir ortamda çalıştırmanın yoludur.

Sanal makineyle karıştırılır ama aynı şey değildir. Sanal makine kendi işletim sistemi çekirdeğini çalıştırır. Konteyner ise ana makinenin çekirdeğini paylaşır; yalnızca dosya sistemi, ağ ve süreç alanı ayrılır. Bu yüzden saniyeler içinde açılır ve çok daha az kaynak tüketir. Bunun bir bedeli de var: Konteyner yalıtımı, sanal makine kadar güçlü bir güvenlik sınırı değildir.

Hangi sorunları çözer?

1. "Bende çalışıyordu." Geliştiricinin bilgisayarında PHP 8.3, sunucuda 8.1 varsa sürprizler kaçınılmazdır. Docker imajı, uygulamanın çalıştığı ortamı birebir tarif eder. Geliştirmede, testte ve canlıda aynı imaj çalışır.

2. Yan yana farklı sürümler. Bir projeniz PHP 7.4, diğeri 8.3 istiyor. Ya da biri MySQL 5.7, diğeri 8.0. Aynı makinede bunları kurmak zahmetlidir. Konteynerlerle her proje kendi sürümünü getirir.

3. Yeni geliştiricinin ilk günü. "Şu paketleri kur, şu ayarı yap, şu dosyayı kopyala" diye uzayan bir belge yerine:

git clone ...
docker compose up

4. Tekrarlanabilir dağıtım. İmaj bir kez oluşturulur ve sürüm numarasıyla etiketlenir. Geri dönmek gerektiğinde bir önceki etiketi çalıştırmak yeterlidir.

Basit bir örnek

Bir PHP uygulaması ve veritabanı için compose.yaml:

services:
  web:
    image: php:8.3-apache
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
    depends_on:
      - db
  db:
    image: mariadb:11
    environment:
      MARIADB_DATABASE: uygulama
      MARIADB_USER: uygulama
      MARIADB_PASSWORD: gelistirme-sifresi
      MARIADB_ROOT_PASSWORD: gelistirme-root
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:

docker compose up -d komutundan sonra uygulama http://localhost:8080 adresinde açılır. Veritabanı verisi dbdata biriminde (volume) saklanır; konteyneri silseniz bile veri kaybolmaz.

Sık yapılan hatalar

  • Veriyi konteynerin içinde tutmak. Konteynerler geçicidir. Veritabanı dosyaları, yüklenen görseller ve loglar mutlaka bir birimde (volume) ya da dışarıda durmalı.
  • Her şeyi root olarak çalıştırmak. İmajlarda mümkün olduğunca ayrıcalıksız bir kullanıcı kullanın.
  • latest etiketine güvenmek. mariadb:latest bugün bir sürüm, altı ay sonra başka bir sürüm olur. Sürümü açıkça yazın.
  • Şifreleri imajın içine gömmek. İmajlar paylaşılır ve katmanları okunabilir. Gizli bilgileri çalışma zamanında ortam değişkeni ya da secret olarak verin.
  • Portları gereksiz yere dışarı açmak. 3306:3306 satırı veritabanını internete açabilir. Docker, güvenlik duvarı kurallarını kendi yönettiği için ufw ya da firewalld kurallarınızı atlayabilir. Veritabanını dışarı açmanız gerekmiyorsa port satırını hiç yazmayın ya da 127.0.0.1:3306:3306 biçimini kullanın.

Ne zaman gereksiz?

Dürüst olmak gerekirse, her proje Docker'a ihtiyaç duymaz:

  • Paylaşımlı hostingde çalışan tek bir WordPress sitesi için Docker bir şey kazandırmaz; çoğu zaman zaten kullanamazsınız bile.
  • Tek kişinin geliştirdiği, tek sunucuda çalışan küçük bir uygulamada, düzgün belgelenmiş bir kurulum betiği çoğu zaman yeterlidir.
  • Ekipte kimse konteyner bilmiyorsa ve canlı ortamı yönetecek kimse yoksa, Docker çözdüğünden fazla sorun getirebilir. Konteynerlerin de güncellenmesi, loglarının izlenmesi ve disk kullanımlarının kontrol edilmesi gerekir. docker system df komutunu ilk çalıştırdığınızda şaşırabilirsiniz.

Başlamak için öneri

Docker'ı önce geliştirme ortamında kullanmaya başlayın. Veritabanı, Redis ve e-posta yakalayıcı (Mailpit gibi) için konteyner kullanmak düşük riskli ve hemen faydalı bir başlangıçtır. Canlı ortama taşımayı ise ekip ve süreçler hazır olduğunda düşünün.

Docker bir amaç değil, bir araçtır. Çözdüğü sorunu yaşıyorsanız harikadır. Yaşamıyorsanız beklemenin hiçbir zararı yok.

Tezcan Kabakçı
Hosting teknik destek uzmanı ve WordPress uzmanı. 2024'ten beri bir hosting şirketinde teknik destek bölümünde çalışıyor; WordPress, DNS ve e-posta sorunlarını her gün yakından görüyor. YouTube kanalı.
Bu yazı 7 Kasım 2026 tarihinde Yazılım kategorisinde yayınlandı.
Yeni yazılar e-postanıza gelsin

Ayda birkaç e-posta; istediğiniz an tek tıkla ayrılabilirsiniz.

Videolu anlatımlar YouTube'da
Sunucu ve WordPress sorunlarını kısa videolarla anlattığım kanala abone olabilirsiniz. ▶ Kanala abone ol

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yazın

Yorumlar onaylandıktan sonra yayımlanır. Bağlantı içeren yorumlar spam olarak değerlendirilebilir.