यह सवाल डोकर के भंडार पर एक मुद्दा से आ रही है:
https://github.com/docker/compose/issues/942मैं केवल डॉकर-compose.yml का उपयोग कर डेटा-कंटेनर कैसे बना सकता हूं?
मैं इसे समझ नहीं डोकर लिखें के साथ एक डेटा कंटेनर (कोई प्रक्रिया चल) बनाने का तरीका।
यह सवाल डोकर के भंडार पर एक मुद्दा से आ रही है:
https://github.com/docker/compose/issues/942मैं केवल डॉकर-compose.yml का उपयोग कर डेटा-कंटेनर कैसे बना सकता हूं?
मैं इसे समझ नहीं डोकर लिखें के साथ एक डेटा कंटेनर (कोई प्रक्रिया चल) बनाने का तरीका।
बिल्कुल यह कैसे करें यह आपके डेटा-केवल-कंटेनर के लिए उपयोग की जाने वाली छवि पर थोड़ा सा निर्भर करता है। अगर आपकी छवि में entrypoint
है, तो आपको इसे अपने docker-compose.yml
में ओवरराइट करना होगा।
DatabaseData:
image: mysql:5.6.25
entrypoint: /bin/bash
DatabaseServer:
image: mysql:5.6.25
volumes_from:
- DatabaseData
environment:
MYSQL_ROOT_PASSWORD: blabla
जब आप इस पर एक docker-compose up
करते हैं, आप ..._DatabaseData_1
की तरह एक कंटेनर जो Exited
की स्थिति को दर्शाता है जब आप docker ps -a
फोन मिल जाएगा: उदाहरण के लिए इस डोकर केंद्र की ओर से आधिकारिक MySql छवि के लिए एक समाधान है। docker inspect
के साथ आगे की जांच से पता चलता है कि इसमें 0
का टाइमस्टैम्प है। इसका मतलब है कि कंटेनर कभी नहीं चला था। जैसे डॉकर कम्पोज़ here के मालिक द्वारा यह कहा गया है।
अब तक, जब तक आप docker-compose rm -v
नहीं करते हैं, तो आपका डेटा केवल कंटेनर (..._DatabaseData_1
) अपना डेटा नहीं खोलेगा। तो आप जितनी बार चाहें docker-compose stop
और docker-compose up
कर सकते हैं।
यदि आप एक समर्पित डेटा-केवल छवि का उपयोग करना चाहते हैं जैसे tianon/true
यह वही काम करता है। यहां आपको entrypoint
को ओवरराइट करने की आवश्यकता नहीं है, क्योंकि यह अस्तित्व में नहीं है। ऐसा लगता है कि उस छवि और डॉकर रचना के साथ कुछ समस्याएं हैं। मैंने कोशिश नहीं की है, लेकिन this article किसी भी समस्या का सामना करने के मामले में पढ़ने योग्य हो सकता है।
सामान्यतः ऐसा लगता है कि आप अपने डेटा-केवल कंटेनर के लिए उसी छवि का उपयोग करना चाहते हैं जिसका उपयोग आप कंटेनर तक पहुंचने के लिए कर रहे हैं। अधिक जानकारी के लिए Data-only container madness देखें।
मुझे समझ में नहीं आता है। वॉल्यूम मेजबान फाइल सिस्टम में एक निर्देशिका है जो एक कंटेनर में मैप हो जाती है, है ना? यहां मात्रा कहाँ है? – CrabMan
@ क्रैबमन [MySQL छवि] (https://github.com/docker-library/mysql/blob/2e80e5ff6aa7d3a09723ad40f5954a0563dbac29/5.7/Dockerfile) में एक वॉल्यूम निर्दिष्ट है। [volumes_from] (https://docs.docker.com/compose/compose-file/) डॉकर को उस वॉल्यूम को डेटाबेसडेटा कंटेनर पर मैप करने के लिए कहता है। – JayChase
@ क्रैबमा, कंटेनर के अंदर देखो जिसमें वॉल्यूम_फ्रॉम विकल्प है (आपके मामले में MySQL कंटेनर)/रन # डॉकर mysql_container निरीक्षण करें और ब्लॉक माउंट्स [{स्रोत: ""}] देखें। "स्रोत" यह कंटेनर डेटा के मेजबान पर आपका पथ है – yuklia
ओपी के सवाल से अंक में उल्लेख के रूप में:
docker-compose.yml
में विनिर्दिष्ट ही नाम के साथ एक डेटा कंटेनर बनाने, और docker-compose up --no-recreate
चलाने (एक docker-compose.yml
में निर्दिष्ट नहीं किया जाएगा पुनर्निर्मित किया जाना चाहिए)।tail -f /dev/null
एक डेटा केवल कंटेनर (DOC) के एक कंटेनर है कि एक मात्रा प्रदाता के रूप में सेवा करने के लिए ही बनाया जाता है। volumes_from
निर्देश का उपयोग कर कंटेनर के पास कोई अन्य कार्य नहीं है, अन्य कंटेनर इसके वॉल्यूम को माउंट कर सकते हैं।
डीओसी को वॉल्यूम बनाने के लिए केवल एक बार चलाना है। अन्य कंटेनर वॉल्यूम्स को संदर्भित कर सकते हैं भले ही यह बंद हो।
ओपी प्रश्न: docker-compose.yml
प्रत्येक बार जब आप docker-compose up
करते हैं तो डीओसी शुरू होता है। ओपी create_only: true
विकल्प के किसी प्रकार का उपयोग करके केवल कंटेनर और वॉल्यूम बनाने के लिए एक विकल्प मांगता है, और इसे चलाता नहीं है।
डॉकर 1.9 के रूप में, डेटा-केवल कंटेनरों को नामित कंटेनर के साथ प्रतिस्थापित किया जा सकता है https://github.com/docker/docker/issues/17798 –
यदि आप होस्ट माउंट पॉइंट निर्दिष्ट करने के लिए नामित वॉल्यूम का उपयोग करना चाहते हैं, तो इसे देखें: https: // stackoverflow।कॉम/प्रश्न/35841241/डॉकर-रचना-नाम-घुड़सवार-मात्रा –