Anasayfa DevOps ve Otomasyon Araçları Docker Nedir? 2025’in Kapsamlı Containerization Rehberi

Docker Nedir? 2025’in Kapsamlı Containerization Rehberi

Son güncelleme tarihi Sep 09, 2025

Merhaba, DevOps meraklıları ve yazılım geliştiricileri! 2025’te, yazılım geliştirme ve dağıtım süreçleri, otomasyon ve ölçeklenebilirlik üzerine kurulu. Docker, bu dünyada bir devrim yaratarak, uygulamaları konteynerleştirme (containerization) yoluyla hızlı, taşınabilir ve güvenilir hale getiriyor. Bu rehberde, Docker’ın tanımını, konteynerleştirmenin temellerini, imaj oluşturma süreçlerini, kurulum adımlarını, hosting entegrasyonunu, güvenlik pratiklerini ve Kubernetes ile kullanımını derinlemesine inceleyeceğiz. Bolca komut örneği, pratik troubleshooting ipuçları ve diagram önerileriyle, Docker’ı projelerinizde ustalıkla kullanmak için ihtiyacınız olan her şeyi bulacaksınız. Kaliteweb gibi bir hosting sağlayıcısıyla Docker’ı entegre ederek, uygulamalarınızı bulutta sorunsuz çalıştırabilirsiniz. Hazırsanız, Docker’ın dünyasına dalalım!

Docker Nedir? Tanım ve Genel Bakış

Docker, uygulamaları ve bağımlılıklarını (kütüphaneler, yapılandırmalar) bir konteyner içinde paketlemeyi sağlayan açık kaynaklı bir platformdur. 2013’te tanıtılan Docker, 2025’te 20 milyon+ geliştirici tarafından kullanılıyor ve DevOps’un temel taşı. Konteynerler, uygulamaları işletim sisteminden izole eder, böylece her ortamda (lokal, bulut, sunucu) aynı şekilde çalışır.

Docker’ın temel özellikleri:

  • Taşınabilirlik: Uygulamalar, geliştirme ve üretim ortamlarında tutarlı çalışır.
  • Hafiflik: Konteynerler, sanal makinelere (VM) göre %70 daha az kaynak kullanır.
  • Hızlı Dağıtım: Docker Hub’dan hazır imajlar (örneğin, MySQL) saniyeler içinde çekilir.
  • Ölçeklenebilirlik: Konteynerler, Kubernetes gibi araçlarla kolayca ölçeklenir.
  • Açık Kaynak: Ücretsiz Community Edition; Enterprise Edition ($1500/yıl) büyük ölçekli projeler için.

Örnek: Bir e-ticaret uygulaması, Docker ile geliştirme, test ve üretim ortamlarında aynı Node.js sürümünü kullanarak hataları %50 azalttı.

Containerization: Docker’ın Kalbi

Konteynerleştirme, uygulamaları ve bağımlılıklarını bir konteyner içinde izole etmeyi ifade eder. Sanal makineler (VM) tüm bir işletim sistemini içerirken, konteynerler yalnızca uygulama ve bağımlılıklarını barındırır, host OS’nin çekirdeğini kullanır. 2025’te, konteynerler DevOps’un %80’ini oluşturuyor.

Avantajlar:

  • Hız: Konteynerler saniyeler içinde başlar, VM’ler dakikalar alır.
  • Kaynak Verimliliği: Bir sunucuda yüzlerce konteyner çalışabilir.
  • Modülerlik: Microservices mimarisinde her servis ayrı bir konteyner.

Dezavantajlar: Konteynerler, host OS’ye bağımlıdır; platformlar arası geçiş (Linux’tan Windows’a) sınırlıdır. Örnek: Bir blog uygulaması, Docker ile Nginx, MySQL ve PHP konteynerlerini birleştirerek %30 daha hızlı dağıtıldı.

Docker İmaj Oluşturma: Dockerfile ile Uygulama Paketleme

Docker imajları, konteynerlerin şablonlarıdır. Dockerfile, imaj oluşturmayı tanımlar. Örnek bir Node.js uygulaması için:

Dockerfile

FROM node:18  
WORKDIR /app  
COPY package*.json ./  
RUN npm install  
COPY . .  
EXPOSE 3000  
CMD ["npm", "start"]  
  • FROM: Temel imaj (node:18).
  • WORKDIR: Çalışma dizini.
  • COPY: Dosyaları konteynere kopyalar.
  • RUN: Kurulum komutları.
  • EXPOSE: Açık port.
  • CMD: Çalıştırılacak komut.

İmaj Oluşturma ve Çalıştırma

docker build -t my-app:latest .  
docker run -p 3000:3000 my-app:latest  

Örnek: Bir geliştirici, bu Dockerfile ile bir REST API’yi konteynerleştirdi ve 5 dakikada dağıttı. Görsel Önerisi: Dockerfile yapısının diagramı – katmanlar (FROM, RUN, CMD) renkli oklarla.

Docker Kurulum Adımları: Adım Adım Rehber

Docker’ı kurmak basit. Ubuntu 22.04 için 2025 rehberi (Windows/macOS benzer):

  1. Gereksinimler:

    • Ubuntu 22.04, 4 GB RAM, root erişimi.
    • İnternet bağlantısı.
  2. Docker Deposu Ekleme:

sudo apt update  
sudo apt install -y ca-certificates curl  
sudo install -m 0755 -d /etc/apt/keyrings  
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 "$VERSION_CODENAME") stable" | \  
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
  1. Docker Kurulumu:
sudo apt update  
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  
  1. Servisi Başlatma:
sudo systemctl start docker  
sudo systemctl enable docker  
  1. Test Etme:
docker run hello-world  
  • Çıktı: “Hello from Docker!” mesajı.

Süre: 10-15 dakika. Sorun çözümü: docker: permission denied hatası için:

sudo usermod -aG docker $USER  

Hosting Entegrasyonu: Docker ve Bulut

Docker, hosting ortamlarında uygulamaları kolaylaştırır. 2025’te entegrasyon yolları:

  • Paylaşımlı Hosting: Kaliteweb’in VPS’lerinde Docker desteklenir, cPanel ile entegre olur.
  • Bulut Hosting: AWS, Azure veya Google Cloud ile Docker konteynerleri çalıştırılır. Datatelekom’un düşük gecikmeli ağları, API yanıtlarını %30 hızlandırır.
  • Docker Compose: Çoklu konteyner yönetimi:
version: '3'  
services:  
  web:  
    image: nginx:latest  
    ports:  
      - "80:80"  
  db:  
    image: mysql:8.0  
    environment:  
      MYSQL_ROOT_PASSWORD: example  
docker-compose up -d  
  • CI/CD Entegrasyonu: GitHub Actions ile Docker imajlarını otomatik oluşturun:
name: Build Docker Image  
on: [push]  
jobs:  
  build:  
    runs-on: ubuntu-latest  
    steps:  
      - uses: actions/checkout@v3  
      - name: Build and push  
        run: |  
          docker build -t my-app:latest .  
          docker push my-app:latest  

Örnek: Bir SaaS uygulaması, Docker Compose ile frontend ve backend konteynerlerini Kaliteweb VPS’sinde çalıştırdı, dağıtım süresi %40 azaldı.

Güvenlik Pratikleri: Docker’ı Koruyun

Docker güvenliği, 2025’te kritik. En iyi pratikler:

  • Minimum İmajlar: Hafif imajlar kullanın (örneğin, alpine yerine debian).
FROM node:18-alpine  
  • Kullanıcı Tanımlama: Root yerine normal kullanıcı:
RUN adduser -D appuser  
USER appuser  
  • Güvenlik Taraması: İmaj açıklarını tarayın:
docker scan my-app:latest  
  • Ağ Kısıtlamaları: Konteynerleri izole edin:
docker network create --driver bridge my-network  
docker run --network my-network my-app  
  • Sır Yönetimi: Environment değişkenleri yerine sırlar kullanın:
docker secret create db_password password.txt  

Örnek: Bir fintech uygulaması, bu pratiklerle Docker güvenliğini %90 artırdı.

Docker ve Kubernetes: Ölçeklendirme Gücü

Kubernetes (K8s), Docker konteynerlerini büyük ölçekte yönetir. 2025’te, Kubernetes %60 pazar payıyla lider orkestrasyon aracı.

  • Temel Kavramlar:
    • Pod: Tek veya birden fazla konteyner.
    • Deployment: Uygulama ölçeklendirme ve güncelleme.
    • Service: Konteynerlere ağ erişimi.
  • Örnek YAML:
apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: my-app  
spec:  
  replicas: 3  
  selector:  
    matchLabels:  
      app: my-app  
  template:  
    metadata:  
      labels:  
        app: my-app  
    spec:  
      containers:  
      - name: my-app  
        image: my-app:latest  
        ports:  
        - containerPort: 3000  
kubectl apply -f deployment.yaml  
  • Entegrasyon: Kaliteweb’in VPS’lerinde K8s cluster kurulabilir, minikube ile test edin:
minikube start  
docker build -t my-app:latest .  
kubectl apply -f deployment.yaml  

Örnek: Bir video akış platformu, Kubernetes ile Docker konteynerlerini ölçekleyerek %99.9 uptime sağladı.

Troubleshooting: Yaygın Sorunlar ve Çözümler

Docker’da karşılaşılan sorunlar ve çözümleri:

  • Hata: “Cannot connect to the Docker daemon”:
    • Çözüm: Docker servisini kontrol edin:
sudo systemctl status docker  
sudo systemctl start docker  
  • Hata: “Image pull failed”:
    • Çözüm: Docker Hub’a giriş yapın veya ağ bağlantısını kontrol edin:
docker login  
  • Hata: “Port already in use”:
    • Çözüm: Çakışan portu bulun ve değiştirin:
sudo netstat -tuln | grep 3000  
docker run -p 3001:3000 my-app  
  • Hata: Konteyner yavaş:
    • Çözüm: Hafif imaj (alpine) kullanın, kaynak limitleri tanımlayın:
services:  
  web:  
    image: my-app:latest  
    deploy:  
      resources:  
        limits:  
          cpus: '0.5'  
          memory: 512M  

Örnek: Bir geliştirici, “daemon” hatasını çözerek Docker’ı 5 dakikada çalışır hale getirdi.

Sonuç: Docker ile DevOps’u Dönüştürün

Docker, uygulamaları hızlı, taşınabilir ve güvenli hale getiriyor. Konteynerleştirme, imaj oluşturma, hosting entegrasyonu ve Kubernetes ile, modern yazılım geliştirmenin temel taşı. Bu rehberle, Docker’ı kurup projelerinizi hayata geçirdiniz. Datatelekom’un altyapısıyla, konteynerlerinizi bulutta ölçeklendirin ve DevOps’un gücünü keşfedin!