Docker Volume Nedir? Nginx ile Kullanım Rehberi (2026)

İngilizce'ye Geç
Kısa Özet: Docker Volume Ne İşe Yarar?

Docker Volumes, konteyner (container) silindiğinde verilerin kaybolmasını önleyerek kalıcı depolama (persistent storage) sağlayan en güvenli mekanizmadır. Terminalde docker volume create <isim> komutu ile oluşturulur ve bir konteyner başlatılırken -v veya --mount parametreleriyle konteynerin içindeki bir dizine bağlanarak verilerin host makinede güvenle saklanmasını sağlar.

Docker konteynerleri doğası gereği ephemeral yani "geçici" bir yapıya sahiptir. Bir konteyner silindiğinde, içinde oluşturulan veya değiştirilen tüm dosyalar (veritabanı kayıtları, loglar, yapılandırmalar) kalıcı olarak yok olur. Verilerinizi korumanın ve konteynerler arasında paylaşmanın en etkili yolu Docker Volume kullanmaktır.


1. Docker Volume Neden Kullanılır?

Kalıcı veri depolamak (örneğin bir PostgreSQL veya MySQL veritabanı çalıştırırken) zorunludur. Docker Volume'ün sunduğu başlıca avantajlar şunlardır:

  • Kalıcılık: Konteyner dursa, çökse veya silinse bile veriler host makinede (sunucuda) korunur.
  • Paylaşım: Aynı Volume, birden fazla konteyner tarafından aynı anda okunabilir ve yazılabilir.
  • Yedekleme Kolaylığı: Volume'ler Docker CLI üzerinden kolayca yedeklenebilir ve farklı sunuculara taşınabilir.
  • Performans: Konteynerin kendi yazılabilir katmanına (writable layer) kıyasla Mac ve Windows ortamlarında çok daha yüksek performans sunar.

2. Nginx ile Docker Volume Uygulaması

Öncelikle kalıcılığın önemini anlamak için geçici bir Nginx konteyneri ayağa kaldıralım ve içine girip değişiklik yapalım.

Nginx İmajını İndirme ve Çalıştırma

docker pull nginx

docker run -d \
  --name demoUygulama \
  -p 8000:80 \
  nginx
docker pull nginx komutu terminal çıktısı
Nginx imajını indirme ve konteyneri başlatma.

Tarayıcınızdan http://localhost:8000 adresine giderek Nginx varsayılan karşılama sayfasını görebilirsiniz.

nginx docker container localhost arayüzü

Konteyner İçine Girip Dosyayı Değiştirme

Çalışan konteynerin terminaline bağlanarak index.html dosyasını değiştirelim:

docker exec -it demoUygulama /bin/bash
cd /usr/share/nginx/html
echo "Merhaba Docker!" > index.html
docker exec container bash girişi nginx html klasörü index html değiştirme

Eğer bu konteyneri silerseniz (docker rm -f demoUygulama), yazdığınız "Merhaba Docker!" metni sonsuza dek kaybolur. İşte bunu önlemek için Volume oluşturacağız.

3. Docker Volume Oluşturma ve Yönetimi

Sisteminizde yeni bir bağımsız volume oluşturmak için:

docker volume create volumeExample
docker volume create komutu kullanımı

Mevcut tüm Volume'leri listelemek veya gereksiz olanları silmek için:

docker volume ls
docker volume rm volumeExample
docker volume ls listeleme ekranı

4. Konteynere Volume Bağlama (-v ve --mount)

Docker'da bir Volume'ü konteynere bağlamanın iki farklı yolu vardır.

Yöntem 1: --mount Parametresi (Önerilen)

Daha okunabilir ve modern olan bu yöntem, hata yapma payını azaltır:

docker run -d \
  --name demoUygulama2 \
  --mount source=volumeExample,target=/usr/share/nginx/html \
  -p 8000:80 \
  nginx

Yöntem 2: -v Parametresi (Klasik)

Eski sürümlerden beri kullanılan daha kısa yöntemdir:

docker run -d \
  --name demoUygulama1 \
  -v volumeExample:/usr/share/nginx/html \
  -p 8000:80 \
  nginx
Artık demoUygulama1 konteynerini silseniz bile, volumeExample içindeki dosyalarınız güvendedir. Yeni bir konteyner oluşturup aynı volume'ü bağladığınızda verilerinize erişmeye devam edersiniz.

5. Dockerfile ve Docker Compose ile Kullanımı

Dockerfile İçinde Volume Tanımlama

Bir imaj inşa ederken, geliştiricilere "bu dizin kalıcı olmalı" mesajı vermek için VOLUME komutu kullanılır:

FROM openjdk:11-jdk
VOLUME ["/data"]
ENTRYPOINT ["java", "-jar", "app.jar"]

Docker Compose İçinde Volume (Bind Mount)

Geliştirme ortamlarında sıklıkla kaynak kodun anında konteynere yansıması için (Bind Mount) kullanılır. . işareti, docker-compose.yml dosyasının bulunduğu yerel dizini temsil eder.

version: '3'
services:
  webserver:
    image: nginx
    ports:
      - "8000:80"
    volumes:
      - .:/usr/share/nginx/html
docker-compose.yml volume bağlama örneği

6. Sonuç

Docker Volumes, veri sürekliliğini (persistence) sağlamak ve veritabanı gibi kritik sistemleri Dockerize ederken veri kaybını önlemek için vazgeçilmez bir mekanizmadır. Bu rehberde Nginx örneği üzerinden terminalde volume yönetimini ve Compose entegrasyonunu başarıyla tamamladık. Devops dünyasında sağlam adımlarla ilerlemek için pratik yapmaya devam edin!

Etiketler: docker volume, docker container, docker nginx, docker compose, devops

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *