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):
-
Gereksinimler:
- Ubuntu 22.04, 4 GB RAM, root erişimi.
- İnternet bağlantısı.
-
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
- Docker Kurulumu:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- Servisi Başlatma:
sudo systemctl start docker
sudo systemctl enable docker
- 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
yerinedebian
).
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!