Meydan okuma - Volume
- Docker & Kubernetes kursu
- Başlangıç
- Ders 80/82
- 5 dk
Kalıcı veri için volume ile bir veritabanı çalıştırırsın.
Meydan okuma: volume ile güvenli güncelleme
Bir veritabanı image'ını yeni sürüme geçirmek için container silinir ve aynı volume'le yeniden oluşturulur. Ama önce yedek alınır; bir şey ters giderse yedekten dönülür:
# 1. yedek
docker run --rm -v pgdata:/veri:ro -v "$PWD":/yedek alpine tar czf /yedek/pgdata.tar.gz -C /veri .
# 2. değiştir
docker rm -f db
docker run -d --name db -e POSTGRES_PASSWORD=gizli -v pgdata:/var/lib/postgresql/data postgres:16.4
# 3. kontrol
docker logs --tail 5 dbUygulama Yedekle
alpine ile, iş bitince silinen bir container'da pgdata'yı /veri'ye salt okunur ve mevcut klasörü ("$PWD") /yedek'e bağlayıp tar czf /yedek/pgdata.tar.gz -C /veri . çalıştıran komutu yaz; ardından oluşan dosyayı ls -lh pgdata.tar.gz ile göster.
Başlangıç kodu
# buraya yazÖrnek çözüm
docker run --rm -v pgdata:/veri:ro -v "$PWD":/yedek alpine tar czf /yedek/pgdata.tar.gz -C /veri .
ls -lh pgdata.tar.gzBeklenen çıktı
-rw-r--r-- 1 root root 6.1M Nov 3 11:42 pgdata.tar.gz
Uygulama Sürümü yükselt
Üç komut yaz: db container'ını zorla sil; postgres:16.4'ten db adlı container'ı arka planda POSTGRES_PASSWORD=gizli ve pgdata volume'ü /var/lib/postgresql/data'ya bağlı olarak başlat; son 5 log satırını göster.
Başlangıç kodu
# buraya yazÖrnek çözüm
docker rm -f db
docker run -d --name db -e POSTGRES_PASSWORD=gizli -v pgdata:/var/lib/postgresql/data postgres:16.4
docker logs --tail 5 dbBeklenen çıktı
db 8f90a1b2c3d4 PostgreSQL Database directory appears to contain a database; Skipping initialization LOG: database system is ready to accept connections
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yeni container aynı pgdata volume'ünü bağladığında POSTGRES_PASSWORD değiştirilirse ne olur?
- Hiçbir şey; değişken yalnızca boş veri dizininde ilk kurulumda kullanılır Doğru cevap
- Parola güncellenir
- Veriler silinir
- Container başlamaz
Açıklama: Mevcut veritabanında parola SQL ile (ALTER USER) değiştirilir.
2 Yedeği volume'e geri aç.
docker run --rm -v pgdata:/veri -v "$PWD":/yedek alpine tar ____ /yedek/pgdata.tar.gz -C /veri
docker run --rm -v pgdata:/veri -v "$PWD":/yedek alpine tar xzf /yedek/pgdata.tar.gz -C /veri
Açıklama: x çıkarır (extract), c oluşturur (create).
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
tar czf |
Yedek al |
tar xzf |
Geri yükle |
docker rm -f db |
Eski container'ı kaldır |
postgres:16.4 |
Yeni sürüm |