Volume backup va tiklash, tmpfs
Muammodan boshlaylik
Volume konteyner o'chirilganda ma'lumotni saqlaydi. Lekin:
- Server diski ishdan chiqdi — volume ham yo'q
- Kimdir
docker volume pruneqildi - Bazani boshqa serverga ko'chirish kerak
Volume — backup emas. Backup — alohida vazifa.
Fayllar uchun: vaqtinchalik konteyner bilan arxiv
docker run --rm \
-v yuklamalar:/manba:ro \
-v "$(pwd)":/backup \
alpine \
tar czf /backup/yuklamalar-$(date +%F).tar.gz -C /manba .
Volume va joriy papkani ulagan vaqtinchalik konteyner arxiv yasaydi. Natija — yuklamalar-2026-11-06.tar.gz kompyuteringizda.
Tiklash
docker volume create yuklamalar-yangi
docker run --rm \
-v yuklamalar-yangi:/manzil \
-v "$(pwd)":/backup:ro \
alpine \
tar xzf /backup/yuklamalar-2026-11-06.tar.gz -C /manzil
Bazalar: dump
[!WARNING] Ishlab turgan baza papkasini
tarbilan arxivlash — buzilgan backup berishi mumkin: fayllar nusxalanayotgan paytda baza ularni yozmoqda. Bazalar uchun — o'z vositasi.
MySQL
docker exec baza mysqldump -uroot -proot123 \
--single-transaction --routines --triggers --events dokon \
| gzip > dokon-$(date +%F).sql.gz
gunzip < dokon-2026-11-06.sql.gz | docker exec -i baza mysql -uroot -proot123 dokon
docker exec -i — stdin ni konteynerga uzatadi. -t qo'shmang — u quvurni buzadi. Batafsil — MySQL kursi, 52-dars.
PostgreSQL
docker exec pg pg_dump -U postgres -Fc dokon > dokon.dump
docker exec -i pg pg_restore -U postgres -d dokon --clean < dokon.dump
Redis
docker exec kesh redis-cli SAVE
docker cp kesh:/data/dump.rdb ./redis.rdb
Avtomatlashtirish
#!/bin/sh
set -e
SANA=$(date +%F)
docker exec baza mysqldump -uroot -p"$MYSQL_ROOT_PASSWORD" --single-transaction --routines --events dokon \
| gzip > "/backup/dokon-$SANA.sql.gz"
find /backup -name "dokon-*.sql.gz" -mtime +14 -delete
Cron bilan har kecha. Nusxani boshqa joyga ham (3-2-1 qoidasi) va tiklashni sinab ko'ring.
tmpfs — faqat xotirada
docker run -d --tmpfs /app/tmp:size=64m ilova
- Fayllar faqat RAM da, diskka tushmaydi
- Konteyner to'xtasa — yo'qoladi
size— chegara
Ishlatilishi:
- Faqat o'qiladigan konteyner (
--read-only, 39-dars) uchun yoziladigan papka - Testlarda tez baza:
--tmpfs /var/lib/postgresql/data
Nima uchun shunday?
Oddiy fayllar mustaqil — ularni istalgan vaqtda nusxalash xavfsiz. Baza fayllari esa bir-biriga bog'liq: ma'lumot, indekslar, tranzaksiya jurnali bir lahzada izchil bo'lishi kerak. mysqldump bazaning o'zidan izchil "surat" so'raydi va uni mustaqil SQL ga aylantiradi — istalgan serverga tiklanadi.
Xulosa
Eslab qoling:
- Volume — backup emas
- Fayllar:
alpine+tar czf/tar xzf - Bazalar:
mysqldump,pg_dump,redis-cli SAVE;exec -i(-tsiz) - Avtomatlashtiring, boshqa joyga nusxalang, tiklashni sinang
--tmpfs— faqat RAM
Keyingi dars
22-dars: Ma'lumotlar bazasi konteynerda — MySQL, PostgreSQL, init skriptlar