VOLUMEअनुदेश रनटाइम पर अपने डोकर कंटेनर में एक डेटा मात्रा पैदा करता है। एक तर्क के रूप में प्रदान की गई VOLUMEनिर्देशिका एक निर्देशिका है जो यूनियन फाइल सिस्टम को बायपास करती है , और मुख्य रूप से निरंतर और साझा डेटा के लिए उपयोग की जाती है।
यदि आप चलाते हैं docker inspect <your-container>, तो आप उस Mountsअनुभाग के नीचे देखेंगे Sourceजो होस्ट पर निर्देशिका स्थान का प्रतिनिधित्व करता है, और Destinationजो कंटेनर में घुड़सवार निर्देशिका स्थान का प्रतिनिधित्व करता है। उदाहरण के लिए,
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
यहाँ 3 उपयोग के मामले हैं docker run -v:
docker run -v /data: यह VOLUMEआपके डॉकरफाइल में निर्देश को निर्दिष्ट करने के लिए अनुरूप है ।
docker run -v $host_path:$container_path: यह आपको रनटाइम के दौरान अपने कंटेनर में अपने $host_pathहोस्ट से माउंट करने की अनुमति देता $container_pathहै। विकास में, यह कंटेनर के साथ अपने होस्ट पर स्रोत कोड साझा करने के लिए उपयोगी है। उत्पादन में, इसका उपयोग होस्ट की DNS जानकारी (जैसे पाया जाता है /etc/resolv.conf) या रहस्यों को कंटेनर में रखने के लिए किया जा सकता है। इसके विपरीत, आप इस तकनीक का उपयोग होस्ट पर विशिष्ट फ़ोल्डरों में कंटेनर के लॉग को लिखने के लिए भी कर सकते हैं। दोनों $host_pathऔर $container_pathपूर्ण मार्ग होने चाहिए।
docker run -v my_volume:$container_path: यह आपके कंटेनर में एक डेटा वॉल्यूम बनाता है $container_pathऔर इसे नाम देता है my_volume। यह अनिवार्य रूप से उपयोग करने वाले वॉल्यूम को बनाने और नाम देने के समान है docker volume create my_volume। इस तरह एक वॉल्यूम का नामकरण कंटेनर डेटा वॉल्यूम और एक साझा-स्टोरेज वॉल्यूम के लिए उपयोगी है जो फ्लोकर जैसे मल्टी-होस्ट स्टोरेज ड्राइवर का उपयोग करता है ।
ध्यान दें कि डेटा वॉल्यूम के रूप में होस्ट फ़ोल्डर को माउंट करने का दृष्टिकोण डॉकरफाइल में उपलब्ध नहीं है। कर्ता दस्तावेज उद्धृत करने के लिए ,
नोट: यह पोर्टेबिलिटी और शेयरिंग उद्देश्य के कारण डॉकफाइल से उपलब्ध नहीं है। मेज़बान निर्देशिका के रूप में, इसकी प्रकृति, मेज़बान-निर्भर, डॉकफ़िले में निर्दिष्ट एक मेज़बान निर्देशिका शायद सभी मेजबानों पर काम नहीं करेगी।
अब यदि आप अपनी फ़ाइलों को गैर-विकास के वातावरण में कंटेनरों में कॉपी करना चाहते हैं, तो आप अपने डॉकरफाइल में ADDया COPYनिर्देशों का उपयोग कर सकते हैं । ये वे हैं जो मैं आमतौर पर गैर-विकास तैनाती के लिए उपयोग करता हूं।
COPYहैADD। वे लगभग समान हैं, लेकिनADDकुछ अतिरिक्त योग्यताएं हैं wrt URL और संग्रह फाइलें जो आश्चर्यचकित कर सकती हैं।