DockerIntermediate
Volumes ও Data Persistence
Container মুছলেও ডেটা না হারানোর উপায় — named volume, bind mount, tmpfs — বাংলায়।
12টি অংশবাংলা ভাষায়
Container-এর file system ephemeral — container মুছলে ডেটা যায়। ডাটাবেস, আপলোড, config — এসব ধরে রাখতে লাগে volumes। Docker-এ তিন ধরনের storage আছে:
তিন ধরনের storage
| ধরন | কোথায় থাকে | ব্যবহার |
|---|---|---|
| Named volume | Docker-managed area | ডেটা যেটা container-এর সাথে যেন না যায় |
| Bind mount | host-এর যেকোনো folder | dev-এ live-reload, config নিয়ন্ত্রণ |
| tmpfs | মেমোরি | অস্থায়ী sensitive ডেটা |
Named volume
MongoDB ডেটা ধরে রাখাbash
bash
docker volume create mongo-data
docker run -d \
--name mongodb \
-v mongo-data:/data/db \
-p 27017:27017 \
mongo:7
# container মুছে ফেললেও ডেটা থাকে!
docker rm mongodb
docker run -d --name mongodb -v mongo-data:/data/db mongo:7Bind mount
Host folder যুক্ত করাbash
bash
# host-এর ./src → container-এর /app/src
docker run -v "$(pwd)/src:/app/src" my-app
# Windows PowerShell-এ
docker run -v "${PWD}/src:/app/src" my-appVolume কমান্ড
Manage volumesbash
bash
docker volume ls
docker volume inspect mongo-data
docker volume rm mongo-data
docker volume prune # অব্যবহৃত সব মুছাDocker Compose-এ volume
compose.ymlyaml
yaml
services:
db:
image: mongo:7
volumes:
- mongo-data:/data/db
volumes:
mongo-data:ঐক্যবদ্ধতা
একই attribute নাম ও path একই compose file-এ একবারই declare হয় — volumes: সেকশন top-level-এ একবার। ব্যাকআপ নিতে চাইলে container-এর ভেতরে থাকা volume-কে host বাইরে copy করুন: docker cp বা docker run --rm -v vol:/vol alpine tar ব্যবহার করা যায়।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।