2016-06-01 14 views
5

यहाँ मेरी डोकर लिखें फ़ाइलकैसे स्थानीय फ़ाइलों को साझा करने के साथ झुंड में कंटेनर डोकर को डोकर-रचना

version: '2' 
services: 
demoui: 
    image: demoimage 
    ports: 
    - "80:8000" 
    volumes: 
    - ./democonfig/config.js:/usr/local/tomcat/webapps/demo-ui/config.js 
    - ./logs/demo-ui:/usr/local/tomcat/logs 
    restart: unless-stopped 

है यह डोकर लिखें फ़ाइल काम करता है जब मैं एकल नोड में था। डॉकर झुंड में जाने के बाद। यह काम नहीं कर रहा है। यह निम्न त्रुटि फेंकता

ERROR: for demoui Error response from daemon: rpc error: code = 2 desc = "oci runtime error: could not synchronise with container process: not a directory" 
Traceback (most recent call last): 
    File "<string>", line 3, in <module> 
    File "compose/cli/main.py", line 63, in main 
AttributeError: 'ProjectError' object has no attribute 'msg' 
docker-compose returned -1 

तो सवाल

  1. क्लस्टर झुंड के लिए फ़ाइल साझा करने के लिए कैसे हो?

  2. या सभी फाइलों को प्रतिलिपि बनाने और इसे चलाने की आवश्यकता है?

  3. कृपया झुंड के साथ डॉकर वॉल्यूम के कुछ दस्तावेज साझा करें।

उत्तर

1

आपको जो त्रुटि मिल रही है वह है क्योंकि आपके वॉल्यूम्स के लिए स्रोत फाइल/डीआईआर आपके द्वारा लॉन्च किए जा रहे स्वार नोड्स पर मौजूद नहीं हैं। डॉकर (और docker-compose) में उन फ़ाइलों को झुंड में अन्य होस्टों पर कॉपी करने का कोई तरीका नहीं है।

स्रोत फ़ाइलों/डीआईआरएस उन सभी नर्म नोड्स पर उपस्थित होने की आवश्यकता है जिन्हें आप कॉन्फ़िगरेशन फ़ाइलों को साझा करना चाहते हैं। आप अपनी रचना फ़ाइल में एक संदर्भ-निर्भर पथ का भी उपयोग कर रहे हैं, जो सभी नोड्स में संगत नहीं होने वाला है। इसके बजाय ./config या ~/config) के बजाय यह एक पूर्ण पथ होना चाहिए (यानी /opt/config)।

एक त्वरित फिक्स के रूप में, आपको कॉन्फ़िगरेशन फ़ाइलों को एक ही स्थान (यानी/ऑप्ट या कुछ अन्य निर्देशिका) में प्रत्येक नोड में कॉपी करने की आवश्यकता होगी और इस संगत स्थान को इंगित करने के लिए अपनी रचना फ़ाइल को संशोधित करने की आवश्यकता होगी, उदा।

volumes: 
    - /opt/config/config.js:/usr/local/tomcat/webapps/demo-ui/config.js 
    - /opt/logs/demo-ui:/usr/local/tomcat/logs 

लंबे समय तक, आप इन फ़ाइलों को सिंक कर सकते या तो स्वयं, lsyncd जैसे उपकरण भी नोड्स भर में स्वचालित रूप से समन्वयित उन्हें रखने के लिए, एक एनएफएस मात्रा पर उन्हें जगह है और माउंट कि प्रत्येक नोड पर, या की तरह कुछ का उपयोग glusterfs

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

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