CodeBlanks Logo Icon CodeBlanks

Veri kalıcılığı

Container silinse bile verinin kalıcı olmasını öğrenirsin.

Veri kalıcılığı

Container'ın yazılabilir katmanı container ile birlikte silinir. Bir veritabanı container'ını güncellemek için silip yeniden oluşturduğunda tüm veriler gider. Kalıcı veri için Docker iki yol sunar:

  • Volume: Docker'ın yönettiği depolama (/var/lib/docker/volumes).
  • Bind mount: ana makinedeki belirli bir klasörün container'a bağlanması.
docker run -d --name db -v pgdata:/var/lib/postgresql/data postgres:16

Container'dan bağımsız yaşam

Volume, container silinince silinmez. Yeni bir container aynı volume'ü bağlayınca veriye kaldığı yerden devam eder. Bu sayede image güncellemesi "sil ve yeni sürümle yeniden başlat" kadar basit olur:

docker rm -f db
docker run -d --name db -v pgdata:/var/lib/postgresql/data postgres:16.4
# tablolar ve kayıtlar yerinde

Uygulama Kalıcı veritabanı

postgres:16'dan db adlı container'ı arka planda POSTGRES_PASSWORD=gizli ile başlat; pgdata volume'ünü /var/lib/postgresql/data dizinine bağla.

Başlangıç kodu

terminal
# buraya yaz

Beklenen çıktı

3b4c5d6e7f80

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir veritabanı container'ı volume olmadan silinip yeniden oluşturulursa ne olur?

  • Veriler otomatik yedeklenir
  • Hiçbir şey değişmez
  • Tüm veriler kaybolur Doğru cevap
  • Veriler image'a kaydedilir

Açıklama: Veriler silinen container'ın yazılabilir katmanındaydı.

2 pgdata volume'ünü veri dizinine bağla.

Soru
docker run -d ____ pgdata:/var/lib/postgresql/data postgres:16
Cevap
docker run -d -v pgdata:/var/lib/postgresql/data postgres:16

Açıklama: -v ad:yol volume bağlar.

3 Eşleştir.

Kavram Anlamı
yazılabilir katman Container ile silinir
volume Docker yönetir, kalıcı
bind mount Ana makine klasörü
/var/lib/docker/volumes Volume'lerin yeri

Başlangıç bölümündeki tüm dersler