DOCKER EĞİTİMİ
Docker eğitimi, "bende çalışıyordu" sorununu geçmişe atan, tutarlı ortam üreten bir disiplin kazandırır. Container ile image kavramı VM ile karşılaştırılarak ayrıştırılır; multi-stage build ile küçük ve güvenli image üretimi, layer cache'in bilinçli yönetimi günlük rutin haline getirilir.
Program sonunda katılımcı, docker-compose ile multi-service stack kurar; volume, bind mount ve tmpfs arasında doğru seçim yapar; network mode (bridge, host, overlay) ile servisleri bağlar. Trivy veya Snyk ile image scan'i CI hattına yerleştirme eğitimin operasyonel kazanımıdır. Eğitim akışı Docker dokümantasyonu referans alınarak şekillenir.
Katılımcı Profili
Bu eğitim, Docker'ı geliştirici makinesinden production'a kadar tutarlı çalıştırmak isteyen rollere yöneliktir:
- DevOps Mühendisleri: Container-based deployment ve registry yöneten roller
- Backend Geliştiriciler: Dev ve prod ortamını Docker ile eşitlemek isteyenler
- Sistem Yöneticileri: Container-tabanlı infrastructure ile çalışan roller
- Yazılım Mimarları: Containerization stratejisi belirleyen liderler
- SRE'ler: Container orchestration ve runtime ile uğraşan mühendisler
Ön Gereklilikler
Bu eğitime katılım için aşağıdaki ön bilgiler önerilir:
- Linux komut satırı ile temel rahatlık (cd, ls, ps, grep)
- En az bir programlama dilinde geliştirme deneyimi
- HTTP, port ve network temel kavramlarına aşinalık
- Git ile sürüm kontrol akışı bilgisi
- Bir IDE veya editör kullanım deneyimi
Süresi ve Tarihi
Süre: 2 gün. Bu süre standart program içindir; ek modüllere ve hedefe göre süre özelleştirilebilir.
Eğitim tarihleri ve saatleri, ekibinizin uygunluğuna göre birlikte planlanır.
Kazanımlar
Eğitim sonunda katılımcı, "bende çalışıyordu"yu geçmişe atar — Docker tutarlı ortam üretiyor:
- Container ile image kavramını VM ile karşılaştırarak ayırt eder
- Multi-stage build ile küçük ve güvenli image üretir
- Layer cache'i bilinçle yönetip build süresini düşürür
- docker-compose ile multi-service stack kurar
- Volume, bind mount ve tmpfs arasında doğru seçim yapar
- Network mode (bridge, host, overlay) ile servisleri bağlar
- Trivy veya Snyk ile image scan'i CI hattına yerleştirir
Docker Eğitimi Konuları
1. Container Devrimi ve Docker'ın Yeri
- VM ve container ayrımı: kernel paylaşımı
- cgroups ve namespaces (Linux çekirdek tabanı)
- Docker, containerd, runc katman mimarisi
- Docker alternatifleri: Podman, Buildah, nerdctl
2. Image, Container, Volume Kavramları
- Image: read-only template; Container: çalışan örnek
- Layer ve union filesystem (overlay2)
- Volume, bind mount, tmpfs mount farkları
- docker run, ps, exec, logs temel komutları
3. Dockerfile Yazımı
- FROM, COPY, ADD, RUN, CMD, ENTRYPOINT direktifleri
- WORKDIR, ENV, ARG, EXPOSE kullanımı
- .dockerignore ile context küçültme
- Layer cache stratejisi (sık değişmeyen önce)
- HEALTHCHECK direktifi
4. Multi-Stage Build ve Image Optimizasyonu
- Build stage ve runtime stage ayrımı
- Distroless ve minimal base image (Alpine, scratch)
- Image boyutu küçültme teknikleri
- BuildKit ve buildx ile cross-platform image
5. Docker Compose ile Multi-Container
- docker-compose.yml YAML yapısı
- services, networks, volumes blokları
- depends_on ve health-based startup
- Profile ile koşullu servis aktivasyonu
- compose watch ve dev workflow
6. Volume ve Bind Mount Yönetimi
- Named volume ve docker volume komutları
- Bind mount ile yerel dosya paylaşımı
- tmpfs mount ve in-memory veri
- Volume backup ve restore
7. Network Modları ve Servis İletişimi
- bridge, host, none, overlay network tipleri
- User-defined bridge ve DNS çözümleme
- Port publishing: -p ve --publish
- Container-to-container iletişim
8. Registry, Tagging ve Dağıtım
- Docker Hub, GitHub Container Registry, Harbor
- Tag stratejisi: latest, semver, git sha
- Private registry kurulumu ve authentication
- Image signing (cosign) ve doğrulama
9. Container Lifecycle ve Operasyon
- Restart policy: no, always, on-failure, unless-stopped
- Resource limit: CPU, memory, pids
- Healthcheck ve liveness/readiness benzeri kontroller
- docker stats ve resource monitoring
10. Loglama, Debug ve Sorun Giderme
- docker logs ve log driver seçenekleri
- JSON-file, syslog, journald, fluentd driver'lar
- docker exec ile container içine girme
- docker inspect ile detaylı bilgi
- dive ile image layer analizi
11. Security ve User Permissions
- USER direktifi: root'tan kaçınma
- --cap-drop ve capability yönetimi
- seccomp ve AppArmor profilleri
- Read-only root filesystem
- Vulnerability scanning: Trivy, Snyk, Grype
12. Production'a Hazırlık ve Orkestrasyon Köprüsü
- 12-Factor App prensipleri ile container uyumu
- Secrets yönetimi (Docker secrets, dış vault)
- Docker Swarm vs Kubernetes seçimi
- CI/CD pipeline'da Docker entegrasyonu
DOCKER EĞİTİMİ ile İlgili
Sıkça Sorulan Sorular ve Cevapları
Multi-stage build ile image boyutu ne kadar küçülür?
Build araçlarını (Maven, npm) ve geliştirme bağımlılıklarını ilk stage'de tutup runtime için ikinci stage'e sadece artifact kopyalanır. Node.js uygulaması 800MB'tan 80MB'a, Java uygulaması 600MB'tan 200MB'a inebilir. Daha küçük image hem dağıtım hem güvenlik açısından kazanım.
Volume, bind mount ve tmpfs arasında ne zaman hangisi?
Volume Docker tarafından yönetilen kalıcı veri — production database için doğru. Bind mount host dizinine bağlanır; development'ta canlı kod düzenleme için ideal ama host yolu container'a bağımlı yapar. Tmpfs RAM-only; geçici veri ve secret'lar için, disk'e yazmadan tutar.
Docker network mode (bridge, host, overlay) farkı nedir?
Bridge default — container'lar izole network'te, port mapping ile dışarı açılır. Host network izolasyonu kaldırır, container host'un network stack'ini kullanır (yüksek performans ama port çakışması riski). Overlay multi-host network — Docker Swarm veya K8s'te çoklu node arasında container iletişimi sağlar.
Docker Compose ile Kubernetes arasında karar?
Compose local development ve tek-host deployment için sade YAML ile multi-container stack tanımlar. Kubernetes production-scale orchestration — HA, autoscaling, rolling update sunar ama operasyonel yükü yüksek. Küçük servisler Compose, ölçek gerekiyorsa K8s. Compose dosyası K8s manifest'ine dönüştürülebilir (kompose tool).
Trivy veya Snyk ile image scan CI hattına nasıl entegre edilir?
Pipeline'da build'ten sonra trivy image registry/image:tag çağrılır; CVE listesi ve severity döner. CRITICAL veya HIGH bulgu varsa build fail edilebilir. Snyk benzer şekilde ama daha fazla policy ve dashboard sunar. Base image'i alpine veya distroless seçmek bulgu sayısını ciddi azaltır.
Container'da non-root user neden önemli?
Container içinde root, host'un user namespace mapping'ine bağlı olmasa da, kernel exploit veya privilege escalation ile host'a sızma riski yaratır. USER ile dedicated user'a düşürmek defense-in-depth sağlar. Bazı Kubernetes admission controller'lar root container'ı reddeder.



