Teknoloji
Docker Nedir? Konteyner Teknolojisine Giriş
Docker, uygulamaları konteyner adı verilen izole ortamlarda çalıştırmayı sağlayan platformdur. Konteyner teknolojisinin temellerini ve kullanımını öğrenin.
Docker Nedir?
Docker, uygulamaları konteyner adı verilen hafif, taşınabilir ve izole ortamlarda paketleyip çalıştırmayı sağlayan açık kaynak bir platformdur. 2013 yılında piyasaya sürülen Docker, yazılım geliştirme ve dağıtım süreçlerini kökten değiştirmiştir.
Konteynerler, sanal makinelerden farklı olarak işletim sistemi çekirdeğini paylaşır, bu yüzden çok daha hafif ve hızlıdır.
Docker vs Sanal Makine
| Özellik | Docker Konteyner | Sanal Makine |
|---|---|---|
| Başlatma süresi | Saniyeler | Dakikalar |
| Boyut | MB düzeyinde | GB düzeyinde |
| İşletim sistemi | Host çekirdeğini paylaşır | Kendi OS'ini çalıştırır |
| Performans | Neredeyse yerele yakın | Hypervisor overhead'i var |
| İzolasyon | Süreç düzeyinde | Tam donanım düzeyinde |
| Kaynak kullanımı | Çok düşük | Yüksek |
Temel Docker Kavramları
- Image: Uygulamanın çalıştırılabilir şablonu (read-only)
- Container: Image'dan oluşturulan çalışan örnek
- Dockerfile: Image oluşturmak için talimat dosyası
- Docker Hub: Image'ların paylaşıldığı registry
- Volume: Kalıcı veri depolama
- Network: Konteynerler arası iletişim
Dockerfile Örneği
# Node.js uygulaması için Dockerfile
FROM node:20-alpine
WORKDIR /app
# Bağımlılıkları önce kopyala (cache optimizasyonu)
COPY package*.json ./
RUN npm ci --only=production
# Uygulama kodunu kopyala
COPY . .
# Port tanımla
EXPOSE 3000
# Uygulamayı başlat
CMD ["node", "server.js"]
Docker Compose
Birden fazla konteyneri tek komutla yönetmenizi sağlar:
# docker-compose.yml
version: "3.8"
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
- DB_HOST=db
db:
image: mysql:8
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=myapp
volumes:
mysql_data:
Temel Docker Komutları
# Image oluştur
docker build -t myapp:1.0 .
# Konteyner çalıştır
docker run -d -p 3000:3000 --name web myapp:1.0
# Çalışan konteynerleri listele
docker ps
# Konteyner loglarını gör
docker logs -f web
# Konteynere bağlan
docker exec -it web sh
# Her şeyi durdur ve temizle
docker compose down -v
Docker Neden Önemli?
- "Bende çalışıyordu" sorunu kalkar: Her yerde aynı ortam
- Hızlı deployment: Saniyeler içinde prod'a çıkma
- Mikroservis mimarisi: Her servis kendi konteynerinde
- CI/CD entegrasyonu: Otomatik test ve deploy pipeline'ları
- Kaynak verimliliği: Bir sunucuda düzinelerce konteyner
💡 Sonraki adım: Docker'ı öğrendikten sonra Kubernetes ile konteyner orkestrasyon dünyasına adım atabilirsiniz.
Yorumlar (0)
Henüz yorum yok. İlk yorumu siz yapın!