नामांकित वॉल्यूम डॉकर के फ़ोल्डर (/ var/lib/docker) के अंदर संग्रहीत किए जाएंगे। यदि आप किसी विशिष्ट होस्ट फ़ोल्डर में वॉल्यूम बनाना चाहते हैं, तो निम्न सिंटैक्स के साथ होस्ट वॉल्यूम का उपयोग करें:
docker run -v /home/ubuntu/data/app-data:/app-data my-image
या अपनी लिखें फ़ाइल से:
version: '2'
services:
mongo:
container_name: "CaseBook-db"
restart: always
image: mongo:3.2.7
ports:
- "27017"
volumes:
- /home/ubuntu/data/db:/data/db
labels:
- "ENVIRONMENT_TYPE=meteor"
app:
container_name: "CaseBook-app"
restart: always
image: "meteor/casebook"
build: .
depends_on:
- mongo
environment:
- MONGO_URL=mongodb://mongo:27017/CaseBook
ports:
- "80:3000"
volumes:
- /home/ubuntu/data/uploads:/Meteor-CaseBook-Container/.uploads
labels:
- "ENVIRONMENT_TYPE=meteor"
होस्ट वॉल्यूम के साथ, छवि के अंदर वॉल्यूम की कोई भी सामग्री होस्ट फ़ोल्डर की यूआईडी सहित होस्ट फ़ोल्डर की सटीक सामग्री के साथ आच्छादित हो जाएगी। एक खाली होस्ट फ़ोल्डर को छवि से प्रारंभ नहीं किया जाता है जिस तरह से एक खाली नामित वॉल्यूम होता है। होस्ट वॉल्यूम का उपयोग करने के लिए UID मैपिंग सबसे कठिन हिस्सा होते हैं।
संपादित करें:नीचे दी गई टिप्पणियों से, यदि आपको एक नामित वॉल्यूम की आवश्यकता है जो होस्ट वॉल्यूम के रूप में कार्य करता है, तो एक स्थानीय लगातार वॉल्यूम प्लगइन है जो डॉकर की प्लगइन सूची में सूचीबद्ध है। प्लगइन स्थापित करने के बाद, आप वॉल्यूम बना सकते हैं जो फ़ोल्डर को होस्ट करने के लिए इंगित करते हैं, इस सुविधा के साथ कि नामित वॉल्यूम को हटाने के बाद भी, होस्ट निर्देशिका पीछे रह जाती है। प्लगइन से नमूना उपयोग में शामिल हैं:
docker volume create -d local-persist -o mountpoint=/data/images --name=images
docker run -d -v images:/path/to/images/on/one/ one
docker run -d -v images:/path/to/images/on/two/ two
इनमें निम्न वॉल्यूम उदाहरण के साथ एक v2 कंपोज़ फ़ाइल भी शामिल है:
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
एक अतिरिक्त विकल्प जिसके बारे में मुझे पिछले एक महीने में पता चला है, वह है स्थानीय वॉल्यूम ड्राइवर के माउंट विकल्पों का उपयोग मैन्युअल रूप से बाइंड माउंट बनाने के लिए करना। यह निम्नलिखित अंतरों के साथ डॉकटर में होस्ट वॉल्यूम के समान है:
- यदि निर्देशिका मौजूद नहीं है, तो बाइंड माउंट की ओर इशारा करते हुए नामित वॉल्यूम वाले कंटेनर को प्रारंभ करने का प्रयास विफल हो जाएगा। होस्ट वॉल्यूम के साथ, docker इसे रूट के स्वामित्व वाली एक खाली निर्देशिका में प्रारंभ करेगा।
- यदि निर्देशिका खाली है, तो नामित वॉल्यूम फ़ाइल और निर्देशिका स्वामित्व/अनुमतियों सहित, माउंट स्थान पर छवि की सामग्री के साथ बाइंड माउंट को प्रारंभ करेगा। होस्ट वॉल्यूम के साथ, होस्ट निर्देशिका सामग्री का कोई आरंभीकरण नहीं होता है।
बाइंड माउंट के रूप में नामित वॉल्यूम बनाने के लिए, आप इसे पहले से बना सकते हैं:
docker volume create --driver local \
--opt type=none \
--opt device=/home/user/test \
--opt o=bind \
test_vol
docker run
. से कमांड, यह --mount
के साथ किया जा सकता है :
docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
foo
या कंपोज़ फ़ाइल में, आप इसके साथ नामित वॉल्यूम बना सकते हैं:
volumes:
data:
driver: local
driver_opts:
type: none
o: bind
device: /home/user/test
यदि आपको नामित वॉल्यूम सुविधाओं की आवश्यकता है, तो मेरी प्राथमिकता स्थानीय-स्थिर तृतीय पक्ष ड्राइवर के बजाय स्थानीय ड्राइवर के साथ नामित वॉल्यूम का उपयोग करना होगा।