Teknoloji ipuçlarını kendin uygula
İçerik
Son yazılar
Biz kimiz
Yazılım Atölyesi, adım adım teknoloji rehberleriyle kendi başına öğrenip uygulama yapmak isteyenlere yardımcı olur. Pratik ipuçları, araç önerileri ve çözümler bulacaksınız.

Docker ile Containerization Başlangıcı

"Bende çalışıyordu" cümlesi, yazılım dünyasının en eski şakası. Docker bu şakayı bitirmek için var. Uygulamanı, bağımlılıklarıyla birlikte tek bir pakete koyarsın. O paket senin makinende, arkadaşının makinesinde ve sunucuda aynı şekilde çalışır.

Bu rehberde iki şeye odaklanacağız: docker image ve container kavramını gerçekten anlamak, sonra kendi uygulamanı çalıştırıp yönetmek. Terminal komutlarına aşinaysan daha rahat ilerlersin; değilsen Linux terminali rehberini yanına açık tut.

Temel Kavramlar ve İlk Container

Docker'ı öğrenirken en çok karıştırılan şey isimlendirme. Önce onu netleştirelim.

Image ile container arasındaki fark

Basit bir benzetme:

Bir de katman (layer) mantığı var. Image'lar üst üste binen katmanlardan oluşur. Aynı katmanı kullanan iki image, o katmanı diskte tek kez tutar. Bu yüzden Docker beklediğinden az yer kaplar.

Kurulum sonrası ilk komutlar

Docker Desktop veya Docker Engine kurulduktan sonra sırayla dene:

  1. docker version — kurulum doğru mu?
  2. docker run hello-world — ilk container'ın. Mesajı basar ve kapanır.
  3. docker run -it ubuntu bash — Ubuntu içinde kabuk açar. exit ile çıkarsın.
  4. docker ps — çalışan container'lar.
  5. docker ps -a — durmuş olanlar dahil hepsi.
  6. docker images — indirdiğin image'lar.

Sık kullanacağın bayraklar:

BayrakNe yapar
-dArka planda çalıştırır
-p 8080:80Host 8080'i container 80'e bağlar
--name webContainer'a isim verir
-e KEY=valueOrtam değişkeni geçer
--rmDurunca container'ı siler
-v $(pwd):/appKlasörü içeri bağlar

Hazır image ile pratik yapmak

Kendi kodunu yazmadan önce hazır image'larla oyna. Öğrenme hızın artar.

Alışkanlık edin: Deneme amaçlı her container'ı --rm ile başlat. Makinen çöplük olmaz.

Kendi Image'ını Üretmek ve Yönetmek

Hazır image kullanmak tüketicilik. İşin asıl faydası, kendi uygulamanı paketlemekte.

Dockerfile yazmak

Proje kökünde Dockerfile adında dosya aç. Node.js örneği:

Sıra neden böyle? Docker her satırı katman olarak önbelleğe alır. Kod değiştiğinde COPY . . sonrası yeniden kurulur, ama npm ci katmanı önbellekten gelir. Build süresi saniyelere iner.

Yanına mutlaka .dockerignore koy. İçine node_modules, .git, .env, dist yaz. Hem image küçülür hem gizli bilgi içeri sızmaz. Şifre ve token'ları asla Dockerfile'a gömme; ortam değişkeni veya secret ile geçir.

Build, tag ve çalıştırma

  1. docker build -t benim-app:1.0 . — sondaki nokta build context'idir.
  2. docker images ile boyutu kontrol et. 1 GB üstü çıktıysa temel image'ı sorgula.
  3. docker run -d -p 3000:3000 --env-file .env benim-app:1.0
  4. Hata alırsan docker logs ilk durağın. İkincisi docker exec -it ... sh.
  5. Etiketlemede latest'e güvenme. Sürüm numarası veya Git commit kısaltması kullan.

Çok aşamalı build ile boyut ciddi düşer: ilk aşamada derle, ikinci aşamada sadece çıktıyı kopyala. Derleyiciler final image'a girmez.

Veri, ağ ve Compose