2016-07-15 18 views
11

मेरे पास कई कंटेनर हैं जिनके लिए राज्य की आवश्यकता है - मैं केवल स्केल को 1 तक सेट कर दूंगा, लेकिन मुझे यह पसंद आएगा कि इससे कोई फर्क नहीं पड़ता कि वे वॉल्यूम पर किस होस्ट को शुरू करते हैं।डॉकर 1.12 स्विम मोड और कंटेनर वॉल्यूम्स

मुझे अनुमान है कि मुझे यह प्राप्त करने के लिए नेटवर्क माउंट का उपयोग करने की आवश्यकता है (जो ठीक है), लेकिन मैं पृथ्वी पर कैसे डॉकर स्विम 1.12 का उपयोग करके वॉल्यूम को कॉन्फ़िगर कर सकता हूं?

मुझे पता है कि मैं डॉकर वॉल्यूम बनाने का उपयोग कर सकता हूं, और मुझे लगता है कि मुझे ड्राइवर को निर्दिष्ट करने की आवश्यकता हो सकती है लेकिन मैं इसका एक उदाहरण ढूंढने के लिए संघर्ष कर रहा हूं!

उत्तर

12

docker service create --mount ... लगातार डेटा के लिए दो विकल्प प्रदान करता है; बाध्य माउंट और नाम वॉल्यूम। बाइंड माउंट बनाए गए मेजबान पर बने रहते हैं इसलिए शेयर करने योग्य नहीं होने के कारण आपके लिए काम नहीं करेंगे।

नामित वॉल्यूम docker volume create का उपयोग करके बनाया जा सकता है या docker service create के हिस्से के रूप में अंतर्निहित रूप से बनाया गया है - mount विकल्प, उदा।

$ docker volume create -d --driver cio --name cassandradb --opt profile=CASSANDRA 
$ docker service create \ 
--mount source=cassandradb,target=/var/lib/cassandra,volume-driver=cio \ 
--replicas 1 \ 
--name cassandra \ 
cassandra 

docker service create नामित संस्करणों के चूक तो प्रकार के उदाहरण में निर्दिष्ट नहीं है। वॉल्यूम ड्राइवर पोर्टेबल वॉल्यूम्स का समर्थन करता है। रेक्सरे या फ़्लॉकर जैसे अन्य वॉल्यूम ड्राइवर पोर्टेबल वॉल्यूम का भी समर्थन करते हैं। यहां RexRay पर उदाहरण वाले आलेख हैं।

वॉल्यूम लेबल और वॉल्यूम विकल्पों के लिए भी माउंट विकल्प हैं। आधिकारिक दस्तावेज अभी भी डॉकर साइट पर नहीं है। हालांकि आप बाइंड माउंट्स और नामित वॉल्यूम here पर अधिक जानकारी ले सकते हैं।

8

मुझे यकीन नहीं है कि इस पर सिंटैक्स को github pull request 24334 शो के रूप में अंतिम रूप दिया गया है, लेकिन आप जिस क्ली विकल्प को खोज रहे हैं वह docker service --mount ... है। इस तरह कुछ उपयोग करते समय, आप एक ऐसी स्थिति बनाते हैं जहां आपको यह सुनिश्चित करने की आवश्यकता होती है कि डेटा बढ़ने के लिए उपलब्ध है, इसलिए आप nfs या gluster जैसे ड्राइवरों को देख रहे हैं। अन्यथा यदि कंटेनर को स्थानांतरित करने की आवश्यकता है और आपने मेजबान से सीधे डेटा घुमाया है, तो इसे आवश्यक माउंट के बिना पुनरारंभ किया जाएगा।


संपादित करें: वर्तमान --mount वाक्य रचना है:

docker service create --name nginx \ 
    --mount type=bind,source=`pwd`/static-site,target=/usr/share/nginx/html \ 
    -p 80:80 nginx 
मेजबान/बाँध माउंट के लिए

या

docker service create --name nginx \ 
    --mount type=volume,source=web,target=/usr/share/nginx/html \ 
    -p 80:80 nginx 

एक नामित मात्रा माउंट के लिए। मैंने विषय पर blog post भी पोस्ट किया क्योंकि मैं वही प्रश्न सुन रहा हूं।

+0

मैं आरसी 4 का उपयोग कर रहा हूं, और/mnt/docker/jackett पर नेटवर्क साझा किया है। क्या यह काम करना चाहिए? 'डॉकर सेवा बनाएं - माउंट बाइंड, src =/mnt/docker/jackett, dst =/config/.config -p 9117: 9117 --name files_jackett dreamcat4/jackett'। मुझे जो त्रुटि मिलती है वह है - माउंट: अमान्य फ़ील्ड 'बाइंड' एक कुंजी = मान जोड़ी होना चाहिए। –

+3

ऐसा लगता है कि सिंटैक्स होना चाहिए: 'डॉकर सेवा बनाएं - माउंट टाइप = बाइंड, स्रोत =/एमएनटी/डॉकर/जैकेट, लक्ष्य =/config/.config -p 9117: 9117 --name files_jackett dreamcat4/jackettclear'! धन्यवाद –

संबंधित मुद्दे