Bu sayfada · 9 başlık
Docker Hakkında Bilmen Gereken 5 Temel Soru
Uygulamaları ve çalışması için gereken tüm bağımlılıkları “konteyner” adı verilen izole paketler haline getirerek her ortamda aynı şekilde çalıştırmak için kullanılır.
“Benim bilgisayarımda çalışıyordu, sunucuda çalışmıyor” sorununu yok etme, mikroservisler kurma, veritabanlarını tek komutla ayağa kaldırma yapılır.
Modern bulut bilişimde (AWS, Google Cloud, Azure), DevOps süreçlerinde ve mikroservis mimarilerinde kullanılır.
docker.com adresinden Docker Desktop kurulur; terminal üzerinden `docker run` ve `docker-compose` komutlarıyla çalıştırılır.
Yazılımın çalışacağı ortamı standardize eder; geliştirme ve üretim ortamları arasındaki tüm uyumsuzlukları sıfırlar.
Docker ne için kullanılır?
Uygulamayı gerekli her şeyiyle birlikte paketlemek
Veritabanı gibi programları kurmadan tek komutla çalıştırmak
Uygulamaları sunuculara ve buluta taşımak
Ekipte herkesin aynı ortamda çalışmasını sağlamak
Docker kullanırken duyacağın kavramlar
- Image (kalıp)
- Uygulamanın ve ihtiyaç duyduğu her şeyin paketlenmiş, değişmeyen hâli. Bir yemek tarifi gibi düşünebilirsin.
- Container (konteyner)
- Bir kalıptan çalıştırılan uygulama. Tariften pişirilmiş yemek gibi.
- Dockerfile
- Kalıbın nasıl hazırlanacağını adım adım anlatan dosya.
- Docker Hub
- Hazır kalıpların paylaşıldığı internet sitesi.
- Port
- Konteynerdeki uygulamaya bilgisayarından ulaşmak için açılan kapı (ör. 8080).
Nasıl kurulur?
Adımları görsellerle takip et. Ekran görüntüsüne dokunarak büyütebilirsin; sürümüne veya işletim sistemine göre düğmelerin yeri değişebilir.
- 1
-
2
Windows'ta kurulum WSL 2'yi etkinleştirmeni isteyebilir. Ekrandaki adımları takip et ve bilgisayarı yeniden başlat.
Şekil 2 · WSL 2 isterse kurulumu tamamla ve bilgisayarı yeniden başlat. (temsili çizim) -
3
Docker Desktop'ı aç ve çalıştığından emin ol. Sonra terminalde test et:
Terminaldocker run hello-worldŞekil 3 · Bu mesajı görüyorsan Docker çalışıyor. (temsili çizim)
Nasıl kullanılır?
Adım adım ilk kullanım. Kod kutularındaki "Kopyala" butonuyla komutları kopyalayabilirsin.
Hazır bir program çalıştır
Örneğin bir web sunucusunu (nginx) kurmadan çalıştır, sonra tarayıcıda localhost:8080 adresini aç:
docker run -d -p 8080:80 nginx
Hazır imajı seçerken resmî kaynak ve sürüm etiketini incele.
Container’a anlaşılır bir ad ver; aynı adı tekrar kullanınca çakışacağını bil.
Açtığın portu 127.0.0.1 ile yalnızca kendi cihazına bağlamak ilk denemeyi sınırlar.
Uygulama: Deneme klasöründe bir index.html oluştur.
Kontrol: Image ve container farkını biliyorum.

Videoyla adım adım izle · 3:20
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Hazır bir program çalıştır
Hazır imajı seçerken resmî kaynak ve sürüm etiketini incele.
İşin mantığı
Container’a anlaşılır bir ad ver; aynı adı tekrar kullanınca çakışacağını bil.
Uygula ve gözlemle
Açtığın portu 127.0.0.1 ile yalnızca kendi cihazına bağlamak ilk denemeyi sınırlar.
Komut / kod · 1
Önce komutun ne yapacağını oku; işletim sistemi farklarını yazılı rehberde kontrol et.
Kod
docker run -d -p 8080:80 nginxSomut görev
Deneme klasöründe bir index.html oluştur.
Kontrol et
Image ve container farkını biliyorum.
Takılırsan
Port kullanımda — Farklı boş bir host portu seç; container içindeki uygulama portunu rastgele değiştirme.
Kendine sor
Image ile container aynı mı? Yanıt: Hayır; image paket, container ondan başlatılan çalışan örnektir.
Çalışanları listele
Şu an çalışan konteynerleri gör:
docker ps
docker ps çalışan, docker ps -a durmuş container’ları da gösterir.
Bir uygulama kapanırsa yalnızca yeniden başlatmak yerine docker logs ile nedenini incele.
Container ID ile image ID’nin farklı kaynakları tanımladığını ayır.
Uygulama: Dockerfile ile uygun web sunucusu imajından statik dosyayı kopyala.
Kontrol: Host portu ile container portunu ayırıyorum.

Videoyla adım adım izle · 3:20
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Çalışanları listele
docker ps çalışan, docker ps -a durmuş container’ları da gösterir.
İşin mantığı
Bir uygulama kapanırsa yalnızca yeniden başlatmak yerine docker logs ile nedenini incele.
Uygula ve gözlemle
Container ID ile image ID’nin farklı kaynakları tanımladığını ayır.
Komut / kod · 1
Önce komutun ne yapacağını oku; işletim sistemi farklarını yazılı rehberde kontrol et.
Kod
docker psSomut görev
Dockerfile ile uygun web sunucusu imajından statik dosyayı kopyala.
Kontrol et
Host portu ile container portunu ayırıyorum.
Takılırsan
Cannot connect to Docker daemon — Docker hizmetinin çalıştığını ve uygun ortam/bağlam seçildiğini kontrol et.
Kendine sor
Port eşleme dosya kaydetmeyi sağlar mı? Yanıt: Hayır; ağ erişimi ile veri kalıcılığı farklı ayarlardır.
Kendi uygulamanı paketle
Proje klasörüne Dockerfile adında bir dosya ekle. Bu örnek bir Python uygulamasını paketler:
FROM python:3.12-slim
WORKDIR /app
COPY . .
CMD ["python", "app.py"]
Dockerfile uygulamanın paketlenme tarifidir; her satırın neden bulunduğunu açıkla.
Statik sayfa örneğinde yalnızca gerekli dosyayı uygun konuma kopyala.
Parola, token veya gereksiz büyük klasörleri imaj bağlamına dahil etme; .dockerignore görevini öğren.
Uygulama: İmaja webino-demo gibi bir etiket vererek build et.
Kontrol: Log üzerinden başlangıç hatasını okuyabiliyorum.

Videoyla adım adım izle · 3:20
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Kendi uygulamanı paketle
Dockerfile uygulamanın paketlenme tarifidir; her satırın neden bulunduğunu açıkla.
İşin mantığı
Statik sayfa örneğinde yalnızca gerekli dosyayı uygun konuma kopyala.
Uygula ve gözlemle
Parola, token veya gereksiz büyük klasörleri imaj bağlamına dahil etme; .dockerignore görevini öğren.
Komut / kod · 1
Önce komutun ne yapacağını oku; işletim sistemi farklarını yazılı rehberde kontrol et.
Kod
FROM python:3.12-slim
WORKDIR /app
COPY . .
CMD ["python", "app.py"]Somut görev
İmaja webino-demo gibi bir etiket vererek build et.
Kontrol et
Log üzerinden başlangıç hatasını okuyabiliyorum.
Takılırsan
Dosyayı değiştirdim ama eski sayfa — Dosya imaja COPY ile alınmışsa yeniden build gerekir; bind mount akışı farklıdır.
Kendine sor
Log niye okunur? Yanıt: Uygulamanın başlamama veya kapanma nedenini görmek için.
Paketi oluştur ve çalıştır
Önce paketi (image) oluştur, sonra çalıştır:
docker build -t benim-uygulamam .
docker run benim-uygulamam
Önce imajı build et, sonra ondan container başlat.
Değişen dosyanın imaja mı kopyalandığını yoksa bind mount ile mi okunduğunu ayır.
Denedikten sonra yalnızca kendi oluşturduğun adlı container’ı durdur; toplu silme komutları kullanma.
Uygulama: Yalnızca 127.0.0.1 üzerinde boş bir port eşleyerek başlat.
Kontrol: Veri kalıcılığını container yaşam süresiyle karıştırmıyorum.

Videoyla adım adım izle · 3:20
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Paketi oluştur ve çalıştır
Önce imajı build et, sonra ondan container başlat.
İşin mantığı
Değişen dosyanın imaja mı kopyalandığını yoksa bind mount ile mi okunduğunu ayır.
Uygula ve gözlemle
Denedikten sonra yalnızca kendi oluşturduğun adlı container’ı durdur; toplu silme komutları kullanma.
Komut / kod · 1
Önce komutun ne yapacağını oku; işletim sistemi farklarını yazılı rehberde kontrol et.
Kod
docker build -t benim-uygulamam .
docker run benim-uygulamamSomut görev
Yalnızca 127.0.0.1 üzerinde boş bir port eşleyerek başlat.
Kontrol et
Veri kalıcılığını container yaşam süresiyle karıştırmıyorum.
Takılırsan
Dosyayı değiştirdim ama eski sayfa — Dosya imaja COPY ile alınmışsa yeniden build gerekir; bind mount akışı farklıdır.
Kendine sor
Log niye okunur? Yanıt: Uygulamanın başlamama veya kapanma nedenini görmek için.
Sık karşılaşılan sorunlar ve çözümleri
Bir yerde takılırsan önce buraya bak.
"Cannot connect to the Docker daemon" hatası
Çözüm: Docker Desktop açık değil. Uygulamayı başlat ve çalışmasını bekle.
"port is already allocated" hatası
Çözüm: O port başka bir program tarafından kullanılıyor. Farklı bir port dene: -p 8081:80.
Docker diskimi doldurdu
Çözüm: Kullanılmayan kalıp ve konteynerleri temizlemek için: docker system prune
Sık sorulan sorular
Docker bir sanal makine mi? +
Hayır. Sanal makine bütün bir işletim sistemini çalıştırır; Docker konteynerleri çok daha hafiftir ve saniyeler içinde açılır.
Yeni başlayan biri Docker öğrenmeli mi? +
İlk aylarda gerekmez. Önce bir dil ve Git öğren; sunucu ve takım işlerine geçince Docker çok işine yarar.
İpuçları
- Docker Hub (hub.docker.com) üzerinde binlerce hazır paket bulunur.
- Bir konteyneri durdurmak için
docker stopve ardındandocker psile gördüğün kimliği yaz. - Docker'a başlamadan önce terminal kullanmaya biraz alışmak işini çok kolaylaştırır.
- Docker Desktop kişisel kullanım ve uygun küçük işletmeler gibi belirli durumlarda ücretsizdir; daha büyük kuruluşlar ve kamu kurumları için koşullar farklıdır. Docker Engine ile Desktop lisansını ayır. Resmî koşullar: Docker Desktop lisans koşulları ↗
Docker uygulamalı eğitim atölyesi
Docker bir uygulamayı bağımlılıklarıyla paketleme ve yalıtılmış süreçler hâlinde çalıştırma yaklaşımı sunar. Image hazırlanmış tarif/katmanlar, container ise bu imajdan başlatılan çalışan örnektir. Bir container’ı silmek ile imajı silmek aynı işlem değildir; veri kalıcılığı da ayrıca tasarlanır.
Port eşleme, uygulamanın container içindeki portunu bilgisayarında bir porta bağlar. Volume veya bind mount ise dosya erişimi ve kalıcılıkla ilgilidir. Bu iki ayarı karıştırmak çok yaygındır: doğru port açılmış olsa bile dosyan yanlış dizine bağlandıysa beklediğin sayfa gelmez.
Bir imajı çalıştırmak üçüncü taraf kodunu çalıştırmaktır. Kaynağını, gerekli izinleri ve sürüm etiketini incele. İlk denemede yerel bir statik sayfa ve yalnızca kendi bilgisayarına bağlanan port kullan; gereksiz ayrıcalık veya bilgisayarındaki bütün klasöre erişim verme.
Kurulum öncesi ve doğrulama
- İşletim sistemine uygun Docker Desktop veya Engine kurulumunu resmî belgelerden seç.
- docker version ile istemci ve daemon bağlantısını denetle.
- Deneme için sır içermeyen ayrı bir klasör ve boşta bir yerel port kullan.

Videoyla adım adım izle · 5:00
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Kendi HTML sayfanı yerel container üzerinden aç
Docker bir uygulamayı bağımlılıklarıyla paketleme ve yalıtılmış süreçler hâlinde çalıştırma yaklaşımı sunar. Image hazırlanmış tarif/katmanlar, container ise bu imajdan başlatılan çalışan örnektir. Bir container’ı silmek ile imajı silmek aynı işlem değildir; veri kalıcılığı da ayrıca tasarlanır.
Hazırlık
İşletim sistemine uygun Docker Desktop veya Engine kurulumunu resmî belgelerden seç. docker version ile istemci ve daemon bağlantısını denetle.
Proje adımı 1
Deneme klasöründe bir index.html oluştur.
Proje adımı 2
Dockerfile ile uygun web sunucusu imajından statik dosyayı kopyala.
Proje adımı 3
İmaja webino-demo gibi bir etiket vererek build et.
Proje adımı 4
Yalnızca 127.0.0.1 üzerinde boş bir port eşleyerek başlat.
Proje adımı 5
Tarayıcıdan o portu aç; beklenen başlığı ve docker logs çıktısını kontrol et.
Proje adımı 6
Yalnızca deneme container’ını durdur; dosya değişince neden yeniden build gerektiğini açıkla.
Başarı ölçütü 1
Image ve container farkını biliyorum.
Başarı ölçütü 2
Host portu ile container portunu ayırıyorum.
Başarı ölçütü 3
Log üzerinden başlangıç hatasını okuyabiliyorum.
Başarı ölçütü 4
Veri kalıcılığını container yaşam süresiyle karıştırmıyorum.
Bitirme çalışması: Kendi HTML sayfanı yerel container üzerinden aç
- Deneme klasöründe bir index.html oluştur.
- Dockerfile ile uygun web sunucusu imajından statik dosyayı kopyala.
- İmaja webino-demo gibi bir etiket vererek build et.
- Yalnızca 127.0.0.1 üzerinde boş bir port eşleyerek başlat.
- Tarayıcıdan o portu aç; beklenen başlığı ve docker logs çıktısını kontrol et.
- Yalnızca deneme container’ını durdur; dosya değişince neden yeniden build gerektiğini açıkla.
Başarı ölçütlerin
- Image ve container farkını biliyorum.
- Host portu ile container portunu ayırıyorum.
- Log üzerinden başlangıç hatasını okuyabiliyorum.
- Veri kalıcılığını container yaşam süresiyle karıştırmıyorum.
Sorun giderme masası
Port kullanımda
Farklı boş bir host portu seç; container içindeki uygulama portunu rastgele değiştirme.
Cannot connect to Docker daemon
Docker hizmetinin çalıştığını ve uygun ortam/bağlam seçildiğini kontrol et.
Dosyayı değiştirdim ama eski sayfa
Dosya imaja COPY ile alınmışsa yeniden build gerekir; bind mount akışı farklıdır.
Kendini kontrol et
Image ile container aynı mı?
Hayır; image paket, container ondan başlatılan çalışan örnektir.
Port eşleme dosya kaydetmeyi sağlar mı?
Hayır; ağ erişimi ile veri kalıcılığı farklı ayarlardır.
Log niye okunur?
Uygulamanın başlamama veya kapanma nedenini görmek için.
Bir sonraki modüller
- Volumes ve veri kalıcılığı
- Compose ile çoklu hizmet
- İmaj güvenliği ve küçük build bağlamı
Bu içerik işine yaradı mı?
Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.