Junior Geliştiriciler için Docker Desktop Rehberi


1. Docker Nedir?

Docker, uygulamaları geliştirmek, dağıtmak ve çalıştırmak için kullanılan bir platformdur. Uygulamaları "container" adı verilen izole ortamlarda paketlemenize olanak tanır.

2. Docker Desktop Nedir?

Docker Desktop, Windows ve Mac bilgisayarlarda Docker kullanmanızı sağlayan bir uygulamadır. Docker Engine, Docker CLI, Docker Compose ve diğer Docker araçlarını içerir.

3. Docker Desktop Kurulumu

  1. Docker Desktop'ı resmi web sitesinden indirin.
  2. İndirilen dosyayı çalıştırın ve kurulum sihirbazını takip edin.
  3. Kurulum tamamlandıktan sonra, bilgisayarınızı yeniden başlatın.

4. Docker Desktop'ı Kullanmaya Başlama

  1. Docker Desktop'ı başlatın.
  2. Uygulama çalıştığında, sistem tepsisinde Docker ikonu görünecektir.
  3. İkona sağ tıklayarak Docker Desktop menüsüne erişebilirsiniz.

5. İlk Container'ınızı Çalıştırma

  1. Terminal veya komut istemcisini açın.
  2. Şu komutu yazın: docker run hello-world
  3. Docker, "hello-world" imajını indirecek ve bir container olarak çalıştıracaktır.

6. Docker Imajları

  • Imajlar, container'ların temelini oluşturur.
  • Imajları aramak için: docker search <imaj-adı>
  • Imaj indirmek için: docker pull <imaj-adı>
  • Mevcut imajları listelemek için: docker images

7. Container'lar ile Çalışma

  • Container başlatmak: docker run <imaj-adı>
  • Çalışan container'ları listelemek: docker ps
  • Tüm container'ları listelemek: docker ps -a
  • Container durdurmak: docker stop <container-id>
  • Container silmek: docker rm <container-id>

8. Docker Compose

Docker Compose, çoklu container uygulamalarını tanımlamak ve çalıştırmak için bir araçtır.

  1. Bir docker-compose.yml dosyası oluşturun.
  2. Dosyada hizmetlerinizi tanımlayın.
  3. docker-compose up komutu ile uygulamanızı başlatın.

9. Dockerfile Oluşturma

Dockerfile, kendi Docker imajınızı oluşturmanızı sağlar.

  1. Bir Dockerfile adlı dosya oluşturun.
  2. Imajınızın temelini, komutları ve yapılandırmaları bu dosyada tanımlayın.
  3. Imajı oluşturmak için: docker build -t <imaj-adı> .

10. İpuçları ve En İyi Uygulamalar

  • Container'ları geçici olarak düşünün, kalıcı veriyi volumes'da saklayın.
  • Imajlarınızı mümkün olduğunca küçük tutun.
  • Docker Hub'ı keşfedin ve hazır imajları kullanın.
  • Docker Desktop ayarlarını keşfedin ve ihtiyaçlarınıza göre özelleştirin.

11. Docker Ağları

Docker ağları, container'lar arasında iletişim kurmanızı sağlar.

  • Ağ oluşturma: docker network create <ağ-adı>
  • Ağları listeleme: docker network ls
  • Container'ı ağa bağlama: docker run --network=<ağ-adı> <imaj-adı>

12. Docker Volumes

Volumes, container'lar arasında veri paylaşımı ve kalıcı veri depolama için kullanılır.

  • Volume oluşturma: docker volume create <volume-adı>
  • Volume'ları listeleme: docker volume ls
  • Container'a volume bağlama: docker run -v <volume-adı>:<container-içi-yol> <imaj-adı>

13. Docker Desktop GUI Kullanımı

  1. Dashboard: Çalışan container'ları, imajları ve volumes'ları görüntüleyebilirsiniz.
  2. Container yönetimi: GUI üzerinden container'ları başlatabilir, durdurabilis ve silebilirsiniz.
  3. Logs: Container loglarını kolayca görüntüleyebilirsiniz.
  4. Terminal: Container içinde terminal açabilirsiniz.

14. Docker Extension Marketplace

Docker Desktop, ek özellikler ve entegrasyonlar sunan bir uzantı pazarına sahiptir.

  1. Docker Desktop'ta "Extensions" sekmesine gidin.
  2. İlginizi çeken uzantıları keşfedin ve yükleyin.
  3. Popüler uzantılar: Kubernetes, Disk Usage, Resource Usage vb.

15. Debugging İpuçları

  1. Container içine girme: docker exec -it <container-id> /bin/bash
  2. Log inceleme: docker logs <container-id>
  3. Container detaylarını görüntüleme: docker inspect <container-id>

16. Docker Desktop Performans Ayarları

  1. Resources sekmesinden CPU, bellek ve disk kullanımını ayarlayın.
  2. File sharing ayarlarını kontrol edin ve gerekirse düzenleyin.
  3. Use the WSL 2 based engine (Windows için) seçeneğini etkinleştirin.

17. Multi-stage Builds

Daha küçük ve güvenli imajlar oluşturmak için multi-stage builds kullanın:

dockerfile
FROM node:14 AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:alpine COPY --from=builder /app/build /usr/share/nginx/html

18. Docker Desktop ile CI/CD Entegrasyonu

  1. GitHub Actions veya GitLab CI ile Docker imajlarınızı otomatik olarak oluşturun.
  2. Docker Hub veya özel bir registry'ye imajlarınızı otomatik olarak gönderin.
  3. Deployment scriptlerinizde docker-compose kullanarak uygulamanızı kolayca dağıtın.

19. Güvenlik En İyi Uygulamaları

  1. Imajlarınızı düzenli olarak güncelleyin.
  2. Minimal base imajlar kullanın (örn. alpine versiyonları).
  3. Docker Content Trust'ı etkinleştirin: export DOCKER_CONTENT_TRUST=1
  4. Imaj tarama araçları kullanın (örn. Docker Scan).

20. İleri Düzey Docker Compose Kullanımı

  1. Ortam değişkenlerini kullanma:
    yaml
    services: web: image: myapp environment: - DATABASE_URL=${DB_URL}
  2. Healthcheck tanımlama:
    yaml
    services: db: image: postgres healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5

21. Gerçek Dünya Senaryoları ve Kullanım Örnekleri

21.1 Yerel Geliştirme Ortamı Oluşturma

Docker Desktop, farklı projeler için izole geliştirme ortamları oluşturmanıza olanak tanır.

Örnek senaryo: MERN (MongoDB, Express, React, Node.js) stack uygulaması geliştirme

yaml
version: '3' services: frontend: build: ./frontend ports: - "3000:3000" volumes: - ./frontend:/app - /app/node_modules backend: build: ./backend ports: - "5000:5000" volumes: - ./backend:/app - /app/node_modules depends_on: - mongo mongo: image: mongo ports: - "27017:27017" volumes: - mongodb_data:/data/db volumes: mongodb_data:

Bu docker-compose.yml dosyası ile tüm MERN stack'i tek bir komutla (docker-compose up) başlatabilirsiniz.

21.2 Mikroservis Mimarisi Simülasyonu

Docker Desktop, mikroservis mimarisini yerel ortamda simüle etmenize yardımcı olabilir.

Örnek senaryo: E-ticaret uygulaması mikroservisleri

yaml
version: '3' services: product-service: build: ./product-service ports: - "8001:8001" order-service: build: ./order-service ports: - "8002:8002" user-service: build: ./user-service ports: - "8003:8003" nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro

Bu yapı, mikroservisleri ayrı container'larda çalıştırmanıza ve aralarındaki iletişimi test etmenize olanak tanır.

21.3 Veritabanı Yönetimi ve Migrasyon

Docker Desktop, veritabanı yönetimi ve migrasyon işlemlerini kolaylaştırır.

Örnek senaryo: PostgreSQL veritabanı ve migrasyon aracı

yaml
version: '3' services: db: image: postgres:13 environment: POSTGRES_DB: myapp POSTGRES_USER: user POSTGRES_PASSWORD: password volumes: - postgres_data:/var/lib/postgresql/data migration: build: ./migration command: ["./wait-for-it.sh", "db:5432", "--", "npm", "run", "migrate"] depends_on: - db volumes: postgres_data:

Bu yapı, veritabanını başlatır ve ardından migrasyon scriptlerini çalıştırır.

22. Docker Desktop ile Yaygın Geliştirme Görevleri

22.1 Bağımlılık Yönetimi

Docker, projenizin bağımlılıklarını yönetmenize yardımcı olabilir.

Örnek: Node.js uygulaması için bağımlılıkları yönetme

dockerfile
FROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["npm", "start"]

Bu Dockerfile, projenizin bağımlılıklarını container içinde izole bir şekilde yönetmenizi sağlar.

22.2 Farklı Ortamlar için Konfigürasyon

Docker, farklı ortamlar (geliştirme, test, üretim) için konfigürasyonları yönetmenize yardımcı olur.

Örnek: Environment variables kullanımı

yaml
version: '3' services: app: build: . environment: - NODE_ENV=${NODE_ENV:-development} - DATABASE_URL=${DATABASE_URL}

.env dosyası:

NODE_ENV=development DATABASE_URL=mongodb://mongo:27017/myapp

Bu yapı, farklı ortamlar için farklı .env dosyaları kullanmanıza olanak tanır.

22.3 Sürekli Entegrasyon (CI) Pipeline'ı Oluşturma

Docker Desktop, CI pipeline'larınızı yerel ortamda test etmenize yardımcı olabilir.

Örnek: GitHub Actions workflow'unu simüle etme

yaml
version: '3' services: ci: image: node:14 volumes: - .:/app working_dir: /app command: sh -c "npm install && npm test && npm run build"

Bu yapı, CI sürecinizi yerel ortamda çalıştırmanıza ve test etmenize olanak tanır.

23. Docker Desktop ile İlgili Yaygın Sorunlar ve Çözümleri

  1. Problem: Docker Desktop yavaş çalışıyor. Çözüm: Resources ayarlarından CPU ve Memory limitlerini artırın.
  2. Problem: "No space left on device" hatası. Çözüm: docker system prune komutu ile kullanılmayan kaynakları temizleyin.
  3. Problem: Windows'da WSL 2 hatası. Çözüm: WSL 2'yi güncelleyin ve Docker Desktop ayarlarından WSL 2 backend'i etkinleştirin.
  4. Problem: Mac'te kernel sürümü uyumsuzluğu. Çözüm: Docker Desktop'ı güncelleyin veya uyumlu bir sürüme geçiş yapın.

Bu ek bilgiler ve örnekler, Docker Desktop'ı gerçek dünya senaryolarında nasıl kullanabileceğinizi göstermektedir. Bu örnekleri kendi projelerinize uyarlayarak Docker ve container teknolojilerini daha etkili bir şekilde kullanabilirsiniz.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال