क्या आप एक फ़ाइल (या इसके विपरीत) पर एक निर्देशिका को माउंट करने की कोशिश कर रहे हैं?


97

मेरे पास वर्जन वाला डॉकटर है 17.06.0-ce। जब मैं आदेश के साथ docker का उपयोग करके NGINX को स्थापित करने की कोशिश कर रहा हूं:

docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest

यह दिखाता है कि

डॉकटर: डेमॉन से त्रुटि प्रतिक्रिया: oci रनटाइम त्रुटि: कंटेनर_लिनक्स.गो: 262: कंटेनर प्रक्रिया शुरू करने के कारण "process_linux.go: 339: कंटेनर इनट के कारण \" rootfs_linux.go: 57: बढ़ते \\ "/ appdata / nginx / conf / conf nginx.conf \\ / var / lib / डोकर / aufs / MNT / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\ "पर \\" / var / lib / डोकर / aufs / MNT / dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 / etc / nginx / nginx.conf "rootfs \\ करने के लिए" \\ "\" के कारण \\ "निर्देशिका नहीं \" "\" ": क्या आप किसी फ़ाइल (या इसके विपरीत) पर निर्देशिका को माउंट करने का प्रयास कर रहे हैं? जांचें कि क्या निर्दिष्ट होस्ट पथ मौजूद है और अपेक्षित प्रकार है।

यदि nginx.confफ़ाइल माउंट नहीं है , तो सब कुछ ठीक है। तो, मैं कॉन्फ़िगरेशन फ़ाइल कैसे माउंट कर सकता हूं?


का आउटपुट क्या है ls -al .? देखना चाहते हैं कि आपका pwd कैसा दिखता है।
त्रि गुयेन

1
मेरे मामले में मैंने गलती से एक निर्देशिका को होस्ट से कंटेनर में फ़ाइल में मैप कर दिया था। कंटेनर को पुनरारंभ करने से अब काम नहीं हुआ। मुझे कंटेनर ( docker rm …) को निकालना था , फिर इसे फिर से बनाना।
19

जवाबों:


27

क्योंकि डॉकटर $PWD/conf/nginx.confएक फोल्डर के रूप में पहचाना जाएगा न कि फाइल के रूप में। जाँच करें कि क्या $PWD/conf/निर्देशिका में शामिल है nginx.confएक के रूप में निर्देशिका

के साथ परीक्षण करें

> cat $PWD/conf/nginx.conf 
cat: nginx.conf/: Is a directory

अन्यथा, एक डॉकर मुद्दा खोलें ।
यह मेरे लिए एक ही विन्यास के साथ ठीक काम कर रहा है।


एक मध्यवर्ती स्तर के लिनक्स उपयोगकर्ता के रूप में मैं उत्सुक हूं, कि लिनक्स को एक फ़ोल्डर के रूप में पहचानने का क्या कारण है और एक फाइल नहीं है?
18 स्कॉट पर जे स्कॉट एबलिन

क्योंकि यह वास्तव में एक फ़ोल्डर है। यदि फ़ाइल मौजूद नहीं है, तो वॉल्यूम तर्क के कारण -v
डॉकटर

ठीक है, इसलिए लिनक्स केवल इसे एक फ़ोल्डर के रूप में पहचानता है यदि docker को पहले से मौजूद नहीं होने के कारण इसे बनाना था; लेकिन अगर nginx.confपहले से ही उस रास्ते में पहले से मौजूद था तो लिनक्स इसे एक फ़ाइल के रूप में पहचानेगा, है ना?
जे। स्कॉट एल्बलिन

139

यह अब (v2.2.0.0 के बाद से) नहीं होना चाहिए, यहां देखें


यदि आप विंडोज के लिए डॉकर का उपयोग कर रहे हैं , तो यह त्रुटि तब हो सकती है जब आपने हाल ही में अपना पासवर्ड बदला हो।

कैसे ठीक करना है:

  1. पहले टूटे हुए कंटेनर के वॉल्यूम को हटाना सुनिश्चित करें
    docker rm -v <container_name>
    अपडेट: नीचे दिए गए चरण पहले संस्करणों को हटाने की आवश्यकता के बिना काम कर सकते हैं।
  2. डॉकटर सेटिंग खोलें
  3. "साझा ड्राइव" टैब पर जाएं
  4. विंडो के निचले भाग पर "रीसेट क्रेडेंशियल्स ..." लिंक पर क्लिक करें
  5. उन ड्राइव को फिर से साझा करें जिन्हें आप डॉकर के साथ उपयोग करना चाहते हैं
  • आपको अपना उपयोगकर्ता नाम / पासवर्ड दर्ज करने के लिए प्रेरित किया जाना चाहिए
  1. "लागू करें" पर क्लिक करें
  2. "रीसेट" टैब पर जाएं
  3. "डॉकटर को पुनरारंभ करें" पर क्लिक करें
  4. अपने कंटेनर / वॉल्यूम फिर से बनाएं

समाधान के लिए क्रेडिट GitHub पर BaranOrnarli को जाता है।


2
धन्यवाद! यह मेरे लिए दूसरे चरण से शुरू करने और आखिरी से बचने के लिए काम करता है।
मेटो हर्मोसिला

1
मैं चरण 2 पर शुरू करके और पिछले एक को छोड़ कर समस्या को ठीक करने में सक्षम था। मुझे फिर से माउंट करने के लिए कंटेनर / वॉल्यूम को नष्ट करने की आवश्यकता नहीं थी।
क्रिश्चियन एंगेल

मैं @MateoHermosilla से सहमत हूं, इसे कंटेनर को बंद करने की आवश्यकता नहीं है, केवल "रीसेट क्रेडेंशियल्स"
sintetico82

सैंडबॉक्स-प्रॉक्सी (हडूप) स्थापित करते समय प्रॉक्सी- deploy.sh को चलाने की कोशिश करते समय मुझे वही त्रुटि मिल रही है। इस विलाप के बाद। इसे ठीक नहीं किया।
वैभव

2
यह मेरे लिए मुद्दा था। पासवर्ड रीसेट हर कुछ महीनों में होता है, इसलिए मैं डॉकर में साझा ड्राइव क्रेडेंशियल को रीसेट करना भूल जाता हूं।
एंडर्स तोर्ब्लाड

44

टीएल; डीआर : कंटेनर से जुड़े वॉल्यूम को हटा दें।

कंटेनर नाम का उपयोग करके खोजें, docker ps -aफिर उस कंटेनर का उपयोग करके हटा दें:

docker rm -v <container_name>

मुसीबत:

यदि आप पहले docker runकमांड को चलाने का प्रयास कर रहे हैं तो त्रुटि हो सकती है जबकि फ़ाइल उस स्थान पर मौजूद नहीं थी जहाँ उसे होस्ट निर्देशिका में होना चाहिए था।

इस स्थिति में docker daemon ने अपनी जगह कंटेनर के अंदर एक निर्देशिका बनाई होगी , जो बाद में सही फाइल को मैप करने में विफल हो जाती है जब सही फाइल को होस्ट निर्देशिका में डाल दिया जाता है और docker कमांड फिर से चलाया जाता है।

उपाय:

कंटेनर से जुड़े वॉल्यूम को निकालें। यदि आप अन्य कंटेनर संस्करणों के बारे में चिंतित नहीं हैं, तो आप इसका उपयोग भी कर सकते हैं:

docker volume rm $(docker volume ls -q)

मूल प्रश्न में कमांड केवल होस्ट किए गए वॉल्यूम को उपयोग किए जाने के रूप में सूचीबद्ध करता है। docker volumeआदेश / इंटरफ़ेस केवल अनाम और नामित मात्रा है, जो मूल प्रश्न का हिस्सा नहीं हैं के लिए है।
प्रोग्रामर

@programmerq त्रुटि को देखें, यह कहता है कि माउंट तब विफल हो रहा था जब उसने /var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\"मेरे कटौती पर माउंट करने का प्रयास किया था : इसमें पहले से ही एक फ़ोल्डर है जो पिछले रन के कारण है, इसलिए यदि आप उस फ़ोल्डर में किसी फ़ाइल को मैप करने का प्रयास करते हैं, तो वह विफल हो जाएगा।
आयुषी

यहां दो चीजें गलत हो सकती हैं, या तो होस्ट में गलत चीजें हैं, या पहले से ही बनाए गए वॉल्यूम में गलत चीजें हैं। मेजबान को सही मानते हुए, मुझे लगा कि मौजूदा वॉल्यूम के साथ मुद्दों को साफ करना बेहतर होगा।
आयुषी

1
यह वास्तव में एक मान्य उत्तर है जब कंटेनर पहले से किसी वॉल्यूम के साथ जुड़ा हुआ है और उस वॉल्यूम के प्रकार को अगले रन में बदला जा रहा है। तो वॉल्यूम हटाने से मदद मिल सकती है!
यान फोटो

1
यह मददगार था। मेरे मामले में समस्या वास्तव में यह थी कि मेरे पास पुराने कंटेनर अभी भी परिभाषित थे। उन्हें झकझोरने के लिए docker rm का उपयोग करना और फिर docker-compose को करना ठीक से काम करता है।
मैक्स टारडीवो

7

डॉकर टूलबॉक्स का उपयोग करने वाले लोगों के लिए उत्तर

समस्या के बारे में यहां कम से कम 3 जवाब दिए गए हैं, लेकिन इसे ठीक से नहीं समझाते और पूरा समाधान नहीं देते। यह सिर्फ एक फ़ोल्डर बढ़ते समस्या है

समस्या का विवरण:

डॉकर टूलबॉक्स एक वर्चुअल मशीन (वर्चुअलबॉक्स में, जिसे बंडल आता है) बनाकर डॉकर की हाइपर-वी आवश्यकता को बायपास करता है। डॉकटर स्थापित और वीएम के अंदर भाग गया है। डॉकर को ठीक से काम करने के लिए, इसे मेजबान मशीन से एक्सेस करना होगा। जो यहाँ नहीं है।

मैंने डॉकटर टूलबॉक्स स्थापित करने के बाद यह वर्चुअलबॉक्स वीएम बनाया और केवल C:\Usersमशीन पर चढ़ा , जैसा कि \c\Users\। मेरा प्रोजेक्ट C:\projectsमाउंटेड वॉल्यूम पर कहीं नहीं था । जब मैं VM को पथ भेज रहा था, तो यह मौजूद नहीं होगा, जैसा C:\projectsकि आरोहित नहीं है। इसलिए, ऊपर त्रुटि।

मान लीजिए कि मेरे पास मेरा प्रोजेक्ट था जिसमें मेरा ngnix config था C:/projects/project_name/

इसे ठीक करना:

  1. VirtualBox पर जाएं, डिफ़ॉल्ट (डॉकटर से वीएम) पर राइट क्लिक करें> सेटिंग्स> साझा फ़ोल्डर यहां छवि विवरण दर्ज करें

  2. दाईं ओर प्लस के साथ छोटे आइकन पर क्लिक करके, एक नया हिस्सा जोड़ें। मैंने निम्नलिखित सेटिंग्स का उपयोग किया:

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

  1. ऊपर मैप कर देंगे C:\projectsकरने के लिए /projects( ROOT/projectsवी एम में), जिसका अर्थ है कि अब आप किसी भी पथ परियोजनाओं में इस तरह देख सकते हैं: /projects/project_name- क्योंकि project_nameसे C:\projects\project_nameअब खड़ा होता है।

संबंधित पथ का उपयोग करने के लिए, पथ नामकरण पर विचार करें c/projectsनहींprojects

  1. सब कुछ पुनः आरंभ करें और इसे अब ठीक से काम करना चाहिए। मैंने वर्चुअल मशीन को वर्चुअलबॉक्स में मैन्युअल रूप से बंद कर दिया और डॉकर टूलबॉक्स सीएलआई को फिर से शुरू किया।

मेरी डॉक फ़ाइल में, मैं अब nginx.confइस तरह का संदर्भ देता हूं :

volumes:
    - /projects/project_name/docker_config/nginx/nginx.conf:/etc/nginx/conf.d/default.conf

जहाँ nginx.conf वास्तव में रहता है C:\projects\project_name\docker_config\nginx\nginx.conf


7

@Ayushya द्वारा दी गई व्याख्या का कारण था कि मैंने इसे कुछ भ्रामक त्रुटि संदेश दिया और आवश्यक हाउसकीपिंग इस तरह की जा सकती है:

$ docker container prune
$ docker volume prune

6

मुझे भी यही समस्या थी। मैं विंडोज 10 17.09 में डब्लूएसएल डेस्कटॉप के साथ WSL का उपयोग कर रहा था।

समस्या का कारण:

समस्या यह है कि विंडोज के लिए डॉकर आपसे अपेक्षा करता है कि आप अपने वॉल्यूम पथों को एक प्रारूप में आपूर्ति करें जो इससे मेल खाता है:

/c/Users/username/app

लेकिन, इसके बजाय WSL प्रारूप का उपयोग करता है:

/mnt/c/Users/username/app

यह भ्रामक है क्योंकि जब मैंने कंसोल में फ़ाइल की जाँच की तो मैंने उसे देखा, और मेरे लिए सब कुछ सही था। मुझे वॉल्यूम पथों के बारे में Windows अपेक्षाओं के लिए डॉकटर के बारे में पता नहीं था ।

समस्या का समाधान:

मैंने विंडोज और डब्लूएसएल मतभेदों के लिए डॉकर को ठीक करने के लिए कस्टम माउंट बिंदुओं को बांध दिया:

sudo mount --bind /mnt/c /c

जैसे इस अद्भुत गाइड में सुझाव दिया गया है: विंडोज और डब्लूएसएल के लिए डॉकिंग अप सेटिंग फ़ॉस्लेस टू वर्कलेस और सब कुछ अब पूरी तरह से काम कर रहा है।

डब्ल्यूएसएल का उपयोग करने से पहले मैं गिट बैश का उपयोग कर रहा था और मुझे भी यह समस्या थी।


1
यहाँ अधिक जानकारी: github.com/10up/wp-local-docker/issues/…
nbeuchat

4

मैं विंडोज के लिए डॉकर टूलबॉक्स का उपयोग कर रहा हूं। डिफ़ॉल्ट रूप से C ड्राइव स्वचालित रूप से माउंट की जाती है, इसलिए फ़ाइलों को माउंट करने के लिए, सुनिश्चित करें कि आपकी फ़ाइलें और फ़ोल्डर्स C DRIVE के अंदर हैं ।

उदाहरण: C:\Users\%USERNAME%\Desktop


1
मेरा माउंटेड फ़ोल्डर C: \ x-suite \ है; मैंने अपनी C ड्राइव , साझा की, लेकिन अभी भी मेरी समस्या हल नहीं हुई है
'

क्या आप डॉकर टूलबॉक्स का उपयोग कर रहे हैं?
अभिषेक डीके

मिनीब्यूब + वर्चुअलबॉक्स + डॉक टूलबॉक्स, लोकोक्यूब को पदावनत किया गया, मुझे किस चालक का उपयोग करना चाहिए?

यदि आप Dockercompose से बढ़ रहे हैं, तो $ {pwd} / <path> का उपयोग करें
अभिषेक DK

1
यदि आप डॉकरफाइल में कर रहे हैं, तो VOLUME / c / x-suite
Abhishek DK

3

शायद किसी को यह उपयोगी लगता है। मेरी रचना फ़ाइल में निम्न वॉल्यूम आरोहित था

./file:/dir/file

जैसे ./file मौजूद नहीं था, यह ABC (फ़ोल्डर के रूप में डिफ़ॉल्ट रूप से) में लगाया गया था।

मेरे मामले में मेरे पास एक कंटेनर था जिसके परिणामस्वरूप

docker commit ABC cool_image

जब मैंने बाद में बनाया ।/file और भागा docker-compose up, तो मेरे पास त्रुटि थी:

[...] क्या आप एक फ़ाइल (या इसके विपरीत) पर एक निर्देशिका को माउंट करने की कोशिश कर रहे हैं? जांचें कि क्या निर्दिष्ट होस्ट पथ मौजूद है और अपेक्षित प्रकार है।

कंटेनर को cool_imageयाद किया /dir/fileगया था कि यह एक निर्देशिका थी और यह हाल ही में बनाई गई और घुड़सवार के साथ विवादित थी./file

समाधान था:

touch ./file
docker run abc_image --name ABC -v ./file:/dir/file
# ... desired changes to ABC
docker commit ABC cool_image

धन्यवाद, यह मेरा मुद्दा भी था क्योंकि मेरे पास एक जटिल डॉकटर सेटअप है!
rmcsharry

1

विंडोज 10 में, मुझे बस अपनी docker-compose.ymlफ़ाइल या डॉकर कॉन्फ़िगरेशन में कुछ भी बदले बिना यह त्रुटि मिलती है ।

मेरे मामले में, मैं एक फ़ायरवॉल नीति के साथ एक वीपीएन का उपयोग कर रहा था जो पोर्ट 445 को ब्लॉक करता है।

वीपीएन से डिस्कनेक्ट करने के बाद समस्या गायब हो जाती है।

इसलिए मैं आपके फायरवॉल की जाँच करने की सलाह देता हूं और डॉकर डेस्कटॉप चलाते समय प्रॉक्सी या वीपीएन का उपयोग नहीं करने की।

विंडोज़ के लिए डॉकर की जाँच करें - अधिक विवरण के लिए साझा ड्राइव के लिए फ़ायरवॉल नियम

मुझे उम्मीद है कि यह किसी और की मदद करेगा।


1

क्या आप इसके बजाय पूर्ण / पूर्ण पथ का उपयोग कर सकते हैं $PWD/conf/nginx.conf? तब यह काम करेगा।

EX:docker run --name nginx-container5 --rm  -v /home/sree/html/nginx.conf:/etc/nginx/nginx.conf -d -p 90:80 nginx
b9ead15988a93bf8593c013b6c27294d38a2a40f4ac75b1c1ee362de4723765b

root@sree-VirtualBox:/home/sree/html# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
b9ead15988a9        nginx               "nginx -g 'daemon of…"   7 seconds ago       Up 6 seconds        0.0.0.0:90->80/tcp   nginx-container5
e2b195a691a4        nginx               "/bin/bash"              16 minutes ago      Up 16 minutes       0.0.0.0:80->80/tcp   test-nginx

यदि आप इसे दोहरे-उद्धरणों के साथ छोड़ देते हैं: docker run -d --rm -v "$ PWD / nginx.conf: /etc/nginx/nginx.conf" nginx इसे कोई अंतर नहीं करना चाहिए क्योंकि शेल इसे पारित करने से पहले अनुवाद करेगा। to docker run और वास्तव में, इससे कोई फर्क नहीं पड़ता, कम से कम मेरे लिए
Manumie

1

मुझे इस कमांड लाइन के साथ विंडोज 10 पर डब्लूएसएल 1 से अधिक डॉकटर का उपयोग करके एक ही समस्या का अनुभव हुआ:

echo $PWD
/mnt/d/nginx

docker run --name nginx -d \
  -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
nginx

मैंने होस्ट सिस्टम पर फ़ाइल के लिए पथ को UNIX शैली निरपेक्ष पथ में बदलकर इसे हल किया:

docker run --name nginx -d \
  -v /d/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
nginx

या पथ विभाजक /के \रूप में के साथ एक Windows शैली निरपेक्ष पथ का उपयोग कर :

docker run --name nginx -d \
  -v D:/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
nginx

विंडोज शैली पथ बनाम यूनिक्स शैली पथ का उपयोग करते समय क्या आपने कोई प्रदर्शन अंतर देखा?
18 स्कॉट पर जे स्कॉट Elblein

मैं बता नहीं सकता। मैं सिर्फ परीक्षण / विकास के लिए विंडोज के लिए डॉकर का उपयोग कर रहा हूं और कभी भी प्रदर्शन की निगरानी नहीं की।
bwibo

0

वर्चुअल बॉक्स को 6.0.10 पर अपडेट करके इस मुद्दे को डॉकर टूलबॉक्स के लिए तय किया गया

https://github.com/docker/toolbox/issues/844

मैं इस तरह की त्रुटि का सामना कर रहा था:


mlepisto@DESKTOP-VKJ76GO MINGW64 ~/G/Projects
$ touch resolv.conf

mlepisto@DESKTOP-VKJ76GO MINGW64 ~/G/Projects
$ docker run --rm -it -v $PWD/resolv.conf:/etc/resolv.conf ubuntu /bin/bash
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/c/Users/mlepisto/G/Projects/resolv.conf\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/overlay2/61eabcfe9ed7e4a87f40bcf93c2a7d320a5f96bf241b2cf694a064b46c11db3f/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/61eabcfe9ed7e4a87f40bcf93c2a7d320a5f96bf241b2cf694a064b46c11db3f/merged/etc/resolv.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.

# mounting to some other file name inside the container did work just fine
mlepisto@DESKTOP-VKJ76GO MINGW64 ~/G/Projects/
$ docker run --rm -it -v $PWD/resolv.conf:/etc/resolv2.conf ubuntu /bin/bash
root@a5020b4d6cc2:/# exit
exit

VitualBox को अपडेट करने के बाद सभी कमांड ने ठीक 🎉 काम किया


0

एक ही सिर खरोंच था क्योंकि मेरे पास स्थानीय रूप से फ़ाइल नहीं थी इसलिए इसे एक फ़ोल्डर के रूप में बनाया।

mimas@Anttis-MBP:~/random/dockerize/tube$ ls
Dockerfile
mimas@Anttis-MBP:~/random/dockerize/tube$ docker run --rm -v $(pwd)/logs.txt:/usr/app/logs.txt devopsdockeruh/first_volume_exercise
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/Users/mimas/random/dockerize/tube/logs.txt\\\" to rootfs \\\"/var/lib/docker/overlay2/75891ea3688c58afb8f0fddcc977c78d0ac72334e4c88c80d7cdaa50624e688e/merged\\\" at \\\"/var/lib/docker/overlay2/75891ea3688c58afb8f0fddcc977c78d0ac72334e4c88c80d7cdaa50624e688e/merged/usr/app/logs.txt\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
mimas@Anttis-MBP:~/random/dockerize/tube$ ls
Dockerfile  logs.txt/

0

अज्ञात: क्या आप किसी फ़ाइल (या इसके विपरीत) पर निर्देशिका को माउंट करने का प्रयास कर रहे हैं? जांचें कि क्या निर्दिष्ट होस्ट पथ मौजूद है और अपेक्षित प्रकार है

मैं मैक पर्यावरण में niginx पर एक समान त्रुटि थी। Docker ने default.conf फ़ाइल को सही से नहीं पहचाना। एक बार सापेक्ष पथ को पूर्ण पथ में बदलने के बाद, त्रुटि ठीक हो गई थी।

      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

0

मेरे लिए, यह काम नहीं किया:

volumes:
  - ./:/var/www/html
  - ./nginx.conf:/etc/nginx/conf.d/site.conf

लेकिन यह ठीक काम करता है (स्पष्ट रूप से एक नई निर्देशिका के अंदर भी मेरी कॉन्फिगर फ़ाइल को स्थानांतरित कर दिया गया है:

volumes:
  - ./:/var/www/html
  - ./nginx/nginx.conf:/etc/nginx/conf.d/site.conf

0

मैं यहां अपना मामला साझा करूंगा क्योंकि इससे भविष्य में किसी और के लिए बहुत समय बच सकता है।

मैं अपने मैकोस पर पूरी तरह से काम कर रहा था, जब तक कि मैं Gitlab CI में docker-in-docker का उपयोग शुरू नहीं करता। मुझे केवल एक रिपॉजिटरी में मास्टर के रूप में काम करने की अनुमति दी गई थी, और गिटलैब सीआई किसी और के द्वारा स्वयं-होस्ट और सेटअप किया गया था और कोई अन्य जानकारी साझा नहीं की गई थी, यह कैसे सेटअप है, आदि के बारे में।

निम्नलिखित समस्या का कारण बना:

volumes:
  - ./.docker/nginx/wordpress/wordpress.conf:/etc/nginx/conf.d/default.conf

केवल जब मैंने देखा कि यह खिड़कियों के नीचे चल रहा हो सकता है (घंटों सिर को खरोंचते हुए), मैंने wodpress.conf को default.conf नाम देने की कोशिश की और बस dir pathnames सेट किया:

volumes:
  - ./.docker/nginx/wordpress:/etc/nginx/conf.d

इससे समस्या हल हो गई!


0

मुझे विंडोज 7 के तहत यह समस्या थी क्योंकि मेरा डॉकटराइल अलग ड्राइव पर था।

यहाँ मैंने समस्या को ठीक करने के लिए क्या किया है:

  1. VirtualBox प्रबंधक खोलें
  2. "डिफ़ॉल्ट" कंटेनर का चयन करें और सेटिंग्स को संपादित करें।
  3. साझा फ़ोल्डर का चयन करें और एक नया साझा फ़ोल्डर जोड़ने के लिए आइकन पर क्लिक करें
  4. फ़ोल्डर पथ: x: \
  5. फ़ोल्डर का नाम: / x
  6. ऑटो-माउंट और स्थायी बनाएं की जाँच करें
  7. वर्चुअल मशीन को पुनरारंभ करें

इस बिंदु पर, docker-compose upकाम करना चाहिए।


0

मुझे डोकर के अपडेट के बाद विंडोज 10 पर वही त्रुटि मिली: 2.3.0.2 (45183)।

... \\\"not a directory\\\"\"":अज्ञात के कारण : क्या आप किसी फ़ाइल (या इसके विपरीत) पर निर्देशिका माउंट करने का प्रयास कर रहे हैं? जांचें कि क्या निर्दिष्ट होस्ट पथ मौजूद है और अपेक्षित प्रकार है

मैं इस तरह से पूर्ण पथों का उपयोग कर रहा था //C/workspace/nginx/nginx.confऔर सब कुछ एक आकर्षण की तरह काम करता था।
अपडेट ने मेरे डॉकटर-कंपोज को तोड़ दिया, और मुझे रूट के लिए /C/workspace/nginx/nginx.confसिंगल के साथ रास्तों को बदलना पड़ा /


0

ध्यान दें कि यह स्थिति तब भी होगी जब आप होस्ट से वॉल्यूम को माउंट करने का प्रयास करते हैं, जो डॉकर्स प्रेफरेंस के रिसोर्स> फाइल शेयरिंग सेक्शन में नहीं जोड़ा गया है।

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

फ़ाइल साझा करने वाले संसाधन के रूप में रूट पथ को जोड़ने से अब डॉकटर को कंटेनर तक पहुंचने के लिए संसाधन तक पहुंचने की अनुमति मिलेगी। ध्यान दें कि वॉल्यूम को फिर से माउंट करने के प्रयास के लिए आपको अपने डॉकर कंटेनर पर मौजूद सामग्रियों को मिटाना पड़ सकता है।

उदाहरण के लिए, यदि आपका एप्लिकेशन स्थित है /mysites/myapp, तो आप /mysitesफ़ाइल साझाकरण संसाधन स्थान के रूप में जोड़ना चाहेंगे ।


0

मेरे पास एक ही मुद्दा था, डॉकटर-कम्पोज़ फ़ाइल के बजाय एक निर्देशिका बना रहा था, फिर मध्य-मार्ग को क्रैश कर रहा था।

मैंने क्या किया:

  1. कंटेनर को बिना किसी मैपिंग के चलाएं।

  2. .confफ़ाइल को होस्ट स्थान पर कॉपी करें :

    docker cp containername:/etc/nginx/nginx.conf ./nginx.conf

  3. कंटेनर ( docker-compose down) निकालें ।

  4. मैपिंग को वापस रखें।

  5. कंटेनर को फिर से माउंट करें।

Docker Compose एक डायरेक्टरी बनाने की कोशिश करने के बजाय, .confफाइल को ढूंढेगा और उसे मैप करेगा ।


0

मेरे मामले में यह विंडोज के लिए डॉकर के साथ एक समस्या थी और बिटकॉकर द्वारा एन्क्रिप्ट किए गए विभाजन का उपयोग करें। यदि आपके पास पुनरारंभ करने के बाद एन्क्रिप्टेड फ़ाइलों पर प्रोजेक्ट फ़ाइलें हैं और ड्राइव को अनलॉक करें तो Dokcer प्रोजेक्ट फ़ाइलों को ठीक से नहीं देखता है।

आपको बस डॉकर को पुनरारंभ करने की आवश्यकता है


-2

l ने माउंट समस्या का समाधान किया है। मैं एक विन 7 पर्यावरण का उपयोग कर रहा हूं, और वही समस्या मेरे साथ हुई।

क्या आप किसी फ़ाइल पर निर्देशिका माउंट करने का प्रयास कर रहे हैं?

कंटेनर में एक डिफ़ॉल्ट सिंक निर्देशिका है C:\Users\, इसलिए मैंने अपनी परियोजना को स्थानांतरित कर दिया C:\Users\, फिर परियोजना को फिर से बनाया। अब यह काम कर रहा है।

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