Docker Nedir?
Docker, uygulamaları konteyner (container) adı verilen izole ortamlarda çalıştırmaya yarayan açık kaynaklı bir konteynerleştirme platformudur.
Bu teknoloji, geliştiricilerin “bilgisayarımda çalışıyor ama sunucuda çalışmıyor” sorununu ortadan kaldırır.
Docker = Hız + Taşınabilirlik + Tutarlılık
Uygulamaları bağımsız paketler halinde çalıştırır.
Her ortamda (Windows, macOS, Linux, Cloud) aynı şekilde çalışır.
Sanallaştırmadan farklı olarak, işletim sistemi çekirdeğini paylaşır.
Docker’a yeni başlıyorsanız:
Introducing Docker Eğitimi
Docker Nasıl Çalışır?
Docker, geleneksel sanal makinelerden farklı olarak hypervisor yerine Docker Engine (Daemon) kullanır.
Bu motor, konteynerlerin oluşturulmasını ve yönetilmesini sağlar.
Docker Mimarisi
| Bileşen | Açıklama |
|---|---|
| Docker Engine | Konteynerleri çalıştıran çekirdek motor. |
| Docker Image | Konteynerin şablonu; tüm bağımlılıkları içerir. |
| Docker Container | Image’in çalışan hali, yani uygulamanın canlı örneği. |
| Dockerfile | Image’in nasıl oluşturulacağını tanımlar. |
| Docker Hub | Resmi ve topluluk imajlarının merkezi deposu. |
Docker Nasıl Kurulur?
Docker kurulumu işletim sistemine göre değişir:
İpucu: WSL 2 desteği sayesinde Windows’ta performans oldukça yüksektir.
Docker ve Konteyner Kavramı
Konteyner, bir uygulamanın bağımlılıklarını, kütüphanelerini ve yapılandırmasını içinde barındıran taşınabilir bir pakettir.
Yani “uygulama nerede olursa olsun aynı şekilde çalışır” garantisini verir.
Docker vs. Virtual Machine
| Özellik | Sanal Makine (VM) | Docker Container |
|---|---|---|
| Boyut | 10–20 GB | 100–300 MB |
| Başlatma Süresi | 1–2 Dakika | 1–2 Saniye |
| Performans | Donanıma bağlı | OS çekirdeğini paylaşır |
| Taşınabilirlik | Düşük | Yüksek |
| İzolasyon | Tam sistem | Uygulama bazlı |
Docker Nasıl Kullanılır?
Bir uygulamayı Docker’a taşımak üç adımda gerçekleşir:
Dockerfile oluşturun:
FROM node:18 WORKDIR /app COPY . . RUN npm install CMD ["npm", "start"] Image oluşturun:
docker build -t myapp . Konteyneri çalıştırın:
docker run -p 3000:3000 myapp Temel Docker Komutları
docker pull
# Bir imajı indirir docker build -t : . # Docker imajı oluşturur docker run -d --name myapp
# Container’ı başlatır docker ps # Çalışan container’ları listeler docker stop # Container’ı durdurur docker rm # Container’ı siler docker images # İmajları listeler Bu komutlar, Docker yönetimini hızlandırır ve günlük operasyonlarda en çok kullanılan işlemlerdir.
Docker Nerelerde Kullanılır?
| Alan | Açıklama |
|---|---|
| Yazılım Geliştirme | Kodun her ortamda aynı çalışmasını sağlar. |
| CI/CD Süreçleri | Jenkins, GitLab CI, GitHub Actions ile otomasyon sağlar. |
| Mikroservis Mimarileri | Servislerin bağımsız çalışmasını kolaylaştırır. |
| Bulut Platformları | AWS, Azure, GCP gibi ortamlarda ölçeklenebilirlik sağlar. |
| Yapay Zeka ve Veri Bilimi | AI modelleri, Jupyter ve TensorFlow ortamlarıyla entegre çalışır. |
Bu alanlarda derinleşmek için:
Docker and Kubernetes Eğitimi
Docker Compose ile Çoklu Servis Yönetimi
Birden fazla konteyneri tek sistemde yönetmek için Docker Compose kullanılır:
version: '3' services: web: build: . ports: - "5000:5000" db: image: postgres Avantajı: Tek komutla tüm altyapıyı başlatabilirsiniz:
docker compose up Docker Containerization Essentials CN100 Eğitimi ile bu yapıları uygulamalı öğrenebilirsiniz.
Docker Swarm ve Kubernetes: Fark Ne?
Docker Swarm → Docker’ın kendi küme yönetim sistemi.
Kubernetes → Büyük ölçekli orkestrasyon için endüstri standardı sistem.
Docker Kubernetes Service Eğitimi bu iki teknolojiyi bir arada öğretir.
Docker ve DevOps: Mükemmel Uyum
Docker, CI/CD süreçlerinde büyük kolaylık sağlar.
Kod geliştirme, test ve dağıtım aşamaları aynı konteyner üzerinden yönetilir.
Gerçek Senaryo:
Geliştirici kodu Docker’da yazar.
Jenkins pipeline otomatik image oluşturur.
QA ekibi aynı image üzerinde test eder.
Production ortamına birebir aynı image deploy edilir.
Docker ve Yapay Zeka
Docker, yapay zeka modellerini taşınabilir servisler haline getirir.
TensorFlow, PyTorch veya Hugging Face modelleri Docker ile her ortamda hızlıca çalışabilir.
Docker Güvenliği — En İyi Uygulamalar
Root olmayan kullanıcılarla çalışın.
Docker Hub imajlarını doğrulayın.
Secrets yönetin.
Ağ izolasyonunu doğru ayarlayın.
Düzenli imaj güncellemeleri yapın.
Ekstra Güvenlik Önerileri:
--security-opt=no-new-privilegesparametresiyle ayrıcalık yükselmesini engelleyin.AppArmor & Seccomp profilleri kullanarak sistem çağrılarını kısıtlayın.
Ayrı network kullanarak konteynerler arası izolasyon sağlayın.
Dockerfile Optimizasyon İpuçları
alpinegibi hafif imajlar tercih edin.Gereksiz dosya ve paketleri silin.
Katman sayısını azaltın.
Cache kullanımını yönetin.
.dockerignoredosyası oluşturun.
Docker vs Podman
| Özellik | Docker | Podman |
|---|---|---|
| Mimari | Daemon tabanlı | Daemonless |
| Root Erişimi | Gerektirir | Rootless destekler |
| CLI Uyumu | Kendi komut seti | Docker CLI uyumlu |
| Multi-Container | Docker Compose ile | Podman Compose gerekir |
| Güvenlik | Geniş kullanım, riskli olabilir | Daha güvenli varsayılan yapı |
Docker Hata Çözümü (Troubleshooting)
En yaygın Docker hataları ve çözümleri:
“Port already allocated” → Farklı port kullanın veya
docker psile mevcut container’ı durdurun.“Cannot connect to Docker daemon” → Docker Engine’in çalıştığından emin olun.
“Permission denied” → Root yetkisi olmadan çalıştırıyorsanız
sudoekleyin veya user group ayarlarını düzenleyin.
Docker Neden Bu Kadar Önemli?
Docker, modern yazılım ekosisteminin temel taşıdır.
Geliştiriciler için “her yerde aynı sonuç”, DevOps ekipleri için “hız ve kontrol” anlamına gelir.
Özetle: Docker sadece bir araç değil, dijital dönüşümün altyapı omurgasıdır.
Eğer hâlâ öğrenmediyseniz, başlamak için en doğru zamandasınız.
İlgili Eğitimler
| Eğitim Adı | Link |
|---|---|
| Introducing Docker | Görüntüle |
| Docker Kubernetes Service | Görüntüle |
| Docker and Kubernetes | Görüntüle |
| Docker Containerization Essentials CN100 | Görüntüle |