2016-03-14 29 views
7

मैं सिर्फ डॉकर का परीक्षण करना चाहता हूं और ऐसा लगता है कि ऐसा कुछ नहीं कर रहा है जैसा इसे करना चाहिए। मैं इस तरह मेरी डोकर-compose.yml है जब:डॉकर लिखें - शेयर वॉल्यूम Nginx

web: 
    image: nginx:latest 
    ports: 
    - "80:80" 

जब ब्राउज़र में मैं चलाने मेरी docker.app डोमेन मैं डिफ़ॉल्ट nginx वेबपेज हो रही है (नमूना डोमेन आईपी डोकर की ओर इशारा)।

लेकिन जब मैं कुछ इस तरह से करने की कोशिश:

web: 
    image: nginx:latest 
    volumes: 
    - /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
    ports: 
    - "80:80" 

जब मैं चलाएँ:

docker-compose up -id 

जब मैं ब्राउज़र में एक ही यूआरएल चलाने मैं हो रही है:

403 निषिद्ध

nginx/1.9.12

मैं अपने होस्ट के रूप में विंडोज 8.1 का उपयोग कर रहा हूं।

क्या मैं कुछ गलत करता हूं या शायद फ़ोल्डरों को इस तरह से साझा नहीं किया जा सकता है?

संपादित

समाधान (@HemersonVarela उत्तर के आधार पर):

मात्रा मैं पारित करने के लिए कोशिश की है D:\Dev\docker स्थान में था इसलिए मैं अपने पथ की शुरुआत में /d/Dev/docker का उपयोग कर रहा था। लेकिन https://docs.docker.com/engine/userguide/containers/dockervolumes/ पर ध्यान देकर आप पढ़ सकते हैं:

आप मैक या विंडोज पर डोकर मशीन का उपयोग कर रहे हैं, तो आपके डोकर डेमॉन अपने ओएस एक्स या Windows फाइल सिस्टम की सीमित पहुंच है। डॉकर मशीन आपके/उपयोगकर्ता (ओएस एक्स) या सी: \ उपयोगकर्ता (विंडोज) निर्देशिका को स्वत: साझा करने का प्रयास करती है।

तो मैं क्या करने की जरूरत है, C:\users\marcin निर्देशिका में मेरी nginx-ww/nginx/html निर्देशिका बनाने के लिए है, तो मैं के साथ समाप्त हुआ:

web: 
    image: nginx:latest 
    volumes: 
    - /c/Users/marcin/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
    ports: 
    - "80:80" 

और यह एक समस्या के बिना काम कर रहा है। फ़ाइलों को अब

उत्तर

9

होना चाहिए यदि आप Windows पर डॉकर मशीन का उपयोग कर रहे हैं, तो डॉकर के पास आपके विंडोज़ फाइल सिस्टम तक सीमित पहुंच है। डिफ़ॉल्ट रूप से डॉकर मशीन आपके C:\Users (विंडोज़) निर्देशिका को स्वतः साझा करने का प्रयास करती है।

तो फ़ोल्डर .../Dev/docker/nginx-www/nginx/html/ होस्ट में C:\Users निर्देशिका के नीचे कहीं भी स्थित होना चाहिए।

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

Dockerfile:

+0

बहुत बहुत धन्यवाद। यही वह है जो मैं याद कर रहा था। हालांकि मुझे 'index.html' फ़ाइल साझाकरण के साथ एक और बहुत अजीब चीज मिली। –

0

आप nginx कंटेनर में अपने nginx.conf कॉपी करने के लिए एक कमांड स्थापित करने के लिए

FROM nginx 
COPY nginx.conf /etc/nginx/nginx.conf` 

बनाएं एक निर्देशिका यह nginx नाम और वहाँ Dockerfile & nginx.conf शब्दों में कहें, तो आप करने के लिए है एक बिल्ड सेट करें:

docker-compose.yml:

web: 
    image: nginx:latest 
    build :./nginx/ 
volumes: 
    - /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/ 
ports: 
    - "80:80" 

फिर अपने कंटेनर बनाएं: sudo docker-compose build

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