Rehberler

Docker’a Yeni Başlayanlar İçin Rehber

Docker’a Yeni Başlayanlar İçin Rehber

“Bende calisiyor” problemini herkes duymustur. Docker tam olarak bunu coziyor. Gelistirici ortamini container icine aliyorsun, her yerde ayni sekilde calisiyor. Ben Docker’i ogrenmeden once yeni bir projeye baslamak bagimlilik kurmakla geciyordu. Simdi bir komutla her sey hazir.

Docker Nedir?

Docker, uygulamalari ve bagimliliklerini izole ortamlarda (container) calistirmanui saglayan bir platform. Sanal makineden farki: VM tam bir isletim sistemi simüle ederken container sadece uygulamayi ve bagimliliklerini paketliyor. Bu yüzden cok daha hafif ve hizli.

Kurulum

Windows icin Docker Desktop indir. Mac icin de Docker Desktop var. Linux icin Docker Engine direkt paket yoneticisiyle kurulabilir. Windows’ta WSL 2 gerekiyor — Docker Desktop kurulum sirasinda bunu soyleeyip yardim ediyor. Kurulum sonrasi test:

docker run hello-world

“Hello from Docker!” mesaji geldiyse calisiyor.

Temel Kavramlar

  • Image: Uygulamanin paketi — talimatlar, dosyalar, bagimliliklar. Bir sablon gibi dusun.
  • Container: Image’in calisan ornegi. Bir image’dan birden fazla container baslatabilirsin.
  • Dockerfile: Image olusturmak icin talimatlar dosyasi.
  • Docker Hub: Hazir image’larin bulundugu merkez. MySQL, Nginx, Python image’lari burada.

Ilk Container’i Calistir

Bir Nginx web sunucusunu tek komutla baslat:

docker run -d -p 8080:80 nginx

Tarayicida localhost:8080 ac — Nginx karsilama sayfasi geldi. Bu komut ne yapti: -d arka planda calistir, -p 8080:80 yerel 8080 portunu container’in 80 portuna bagla.

Temel Komutlar

# Calisan container'lari listele
docker ps

# Tum container'lari listele (durdurulmus dahil)
docker ps -a

# Container durdur
docker stop [container-id]

# Container sil
docker rm [container-id]

# Image'lari listele
docker images

# Container icine gir
docker exec -it [container-id] bash

# Container loglarini gor
docker logs [container-id]

Dockerfile Yazma

Kendi uygulamani image’a donusturmek icin Dockerfile yaziyorsun. Basit bir Python uygulamasi icin:

FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["python", "app.py"]

Image olustur:

docker build -t benim-uygulama:1.0 .

Calistir:

docker run -p 5000:5000 benim-uygulama:1.0

Docker Compose: Birden Fazla Container

Uygulama + veritabani gibi birden fazla servisi birlikte yonetmek icin Docker Compose kullaniyorsun. docker-compose.yml dosyasi:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: sifre123
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Baslatmak icin: docker compose up -d

Durdurmak icin: docker compose down

Volume: Veriyi Kalici Tut

Container silinince icindeki veri gidiyor. Veriyi kalici tutmak icin volume kullaniyorsun:

docker run -v /yerel/klasor:/container/yolu nginx

Gercek Hayat Kullanimi

Ben Docker’i su isler icin kullaniyorum: Yerel gelistirme ortami — MySQL, PostgreSQL, Redis kurmadan container ile calistirma. Farkli Python surumlerini test etme. Ev sunucusunda Jellyfin, Pi-hole, Nextcloud calistirma. CI/CD pipeline’larinda tutarli build ortami.

Sonuc

Docker ogrenmeye basladigimda “bu kadar mi ise yariyor?” diye sasirdim. Simdi olmadan calismak garip geliyor. Yeni bir projeye baslarken ilk is docker-compose.yml yaziyorum. Ogrenme egrisi birkacc gun ama getirisi cok uzun vadeli.

İndirme hazırlanıyor...

5

İndirme 5 saniye içinde başlayacak...