डॉकर: एक विशिष्ट निर्देशिका में एक निरंतर मात्रा बनाएँ


16

मुझे डॉकर के लिए एक सतत मात्रा बनाने की आवश्यकता है । वॉल्यूम को नाम देना चाहिए extra-addonsऔर अंदर स्थित होना चाहिए /mnt/

मैं यह आदेश चलाता हूं:

sudo docker volume create /mnt/extra-addons

मुझे यह त्रुटि संदेश मिला:

Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path

ध्यान दें कि जब मैं बस चलाता हूं: sudo docker volume create extra-addonsतो मुझे इस समस्या का सामना नहीं करना पड़ता है, लेकिन जब मैं प्रश्न का उपयोग करके वॉल्यूम का निरीक्षण करता sudo docker inspect extra-addonsहूं, तो मैं देखता हूं कि यह एक ऐसी जगह पर स्थित है जिसे मैं नहीं चाहता:

[
    {
        "CreatedAt": "2018-04-21T14:40:25+03:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/extra-addons/_data",
        "Name": "extra-addons",
        "Options": {},
        "Scope": "local"
    }
]

मेरा मतलब है कि मैं इस तरह से वॉल्यूम देखना चाहता हूं: /mnt/extra-addons

कोई उपाय?

जवाबों:


14

मुझे इसका हल मिला:

मुझे लोकल-पर्सिस्टल प्लगइन इंस्टॉल करना था ।

मुझे आरोह बिंदु बनाने के लिए वॉल्यूम को माउंट करना होगा जो निम्नानुसार है:

 sudo docker volume create -d local-persist -o mountpoint=/mnt/ --name=extra-addons

जांचें कि मुझे क्या मिला जिसकी मुझे उम्मीद थी:

sudo docker volume inspect extra-addons

परिणाम:

[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local-persist",
        "Labels": {},
        "Mountpoint": "/mnt/",
        "Name": "extra-addons",
        "Options": {
            "mountpoint": "/mnt/"
        },
        "Scope": "local"
    }
]

यही मैं ढूंढ रहा था।


6

यदि आप अपने डॉकटर को कोई प्लग-इन स्थापित नहीं करना चाहते हैं, तो मैं आपके वॉल्यूम के लिए एक प्रतीकात्मक लिंक बनाने की सलाह दूंगा:

$ docker volume create <myVolume>
$ docker volume inspect <myVolume> 
[
    {
        "CreatedAt": "0001-01-01T00:00:00Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/<myVolume>/_data",
        "Name": "<myVolume>",
        "Options": {},
        "Scope": "local"
    }
]
$ mkdir /mnt/<myVolume>
# if you already have data in your volume, you should copy it to `/mnt/<myVolume>` now
$ sudo rm -rf /var/lib/docker/volumes/<myVolume>/_data
$ sudo ln -s /mnt/<myVolume> /var/lib/docker/volumes/<myVolume>/_data

अब अपनी मात्रा का हमेशा की तरह उपयोग करने के लिए स्वतंत्र महसूस करें ( /mntजैसा कि आप चाहते थे, आपके सभी डेटा मधुमक्खी के साथ)


ऐसा मत सोचो कि यह एक अच्छा विचार है जो डॉकर्स प्रबंधित संस्करणों को हटा रहा है। डॉकटर में मेजबान निर्देशिका को माउंट करने के बजाय माउंट का उपयोग करें।
लेक्स

4

मुझे नहीं लगता कि local-persistड्राइवर का उपयोग करने का तरीका है। इसे थोड़ी देर में अपडेट नहीं किया गया है। आप एक स्थानीय (होस्ट) निर्देशिका को डॉक माउंट का उपयोग करके डॉक कंटेनर में माउंट कर सकते हैं।

निम्नलिखित चलाना मेरे डेस्कटॉप पर मैप की गई निर्देशिका के साथ एक नया कंटेनर बनाता है।

mkdir extra-addons
docker run -it -v /Users/me/Desktop/extra-addons:/mnt/extra-addons busybox /bin/sh
ls

अब आप mntअपने कंटेनर की जड़ में एक फ़ोल्डर देख सकते हैं ।

bin dev etc home mnt proc root sys tmp usr var

कंटेनर में एक नई फ़ाइल बनाना

touch /mnt/extra-addons/test.txt

मेरे होस्ट मशीन पर एक test.txt फ़ाइल बनाता है। निर्दिष्ट पथ पर। यह अब साझा फ़ोल्डर को पढ़ने / लिखने का एक दो तरीका है। एकाधिक कंटेनर एक ही फ़ोल्डर को माउंट कर सकते हैं। और जब आप अपना कंटेनर बंद कर देंगे तब यह जारी रहेगा।

यहाँ छवि विवरण दर्ज करें


धन्यवाद, यह मुझे एक कदम बचा लिया। मैं एक वॉल्यूम जोड़ने की कोशिश कर रहा था। बस
डिर

यह एक बांध माउंट बनाता है, डॉक
जो

@JoeCabezas हाँ वॉल्यूम उत्पादन के लिए एक बेहतर विकल्प हैं, क्योंकि वे docker प्रबंधित हैं और अन्य ऑपरेटिंग सिस्टम कार्यों से अलग हैं। लेकिन एक विशिष्ट निर्देशिका में इस सवाल के लिए बाइंड माउंट का जवाब है। यह दोनों को अलग करने वाले उत्तर को बढ़ाता है।
लेक्स

अंतर्दृष्टि के लिए धन्यवाद, आप सही हैं, प्रश्न का उत्तर देने के लिए एक बाँध मात्रा पर्याप्त है।
जो कैबेजस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.