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

-v $(which aws): $(which aws)

आदेश।

docker run -d -p 8080:8080 -p 50000:50000 -v ~/jenkins_directory:/var/jenkins_home -v $(which aws):$(which aws) jenkins/jenkins:2.190.2

हालांकि जब मैं इस कंटेनर को कमांड लाइन में चलाता हूं, तो यह निम्न त्रुटि प्रतिक्रिया दिखाता है:

डॉकटर: डेमॉन से त्रुटि प्रतिक्रिया: माउंट्स अस्वीकृत: पथ /usr/लोकल/बिन/एडब्ल्यूएस ओएस एक्स से साझा नहीं किया गया है और डॉकर को ज्ञात नहीं है।

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

पथ /usr डॉकर द्वारा आरक्षित है हालांकि विशिष्ट उपनिर्देशिकाओं को निर्यात करना संभव हो सकता है।

मैं इसके आसपास जाने में सक्षम हूं। मैंने पूरा जोड़ने की कोशिश की

usr/स्थानीय/बिन/aws

डॉकर फ़ाइल साझाकरण पैनल में लेकिन फिर भी यह वही समस्या दिखाता है। क्या किसी को पता है कि मैं अपने स्थानीय कंटेनर में जेनकींस छवि में एडब्ल्यूएस का पता भेजने के लिए और क्या कर सकता हूं जिसे मैं डॉकर कंटेनर में चलाने की कोशिश कर रहा हूं?

0
Ufomammut 17 नवम्बर 2019, 19:34

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपनी डॉकटर छवि में aws-cli स्थापित करने की आवश्यकता है, और फिर आप अपने कंटेनर के अंदर aws-cli का उपयोग करने में सक्षम होंगे।

FROM jenkins/jenkins:2.190.2
USER root
RUN apt-get update && \
    apt-get install awscli  -y
USER jenkins

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

डेटा को सहेजने (जारी रखने) और कंटेनरों के बीच डेटा साझा करने में सक्षम होने के लिए, डॉकर वॉल्यूम की अवधारणा के साथ आया। काफी सरलता से, वॉल्यूम निर्देशिका (या फाइलें) हैं जो डिफ़ॉल्ट यूनियन फाइल सिस्टम के बाहर हैं और मेजबान फाइल सिस्टम पर सामान्य निर्देशिका और फाइलों के रूप में मौजूद हैं।

समझ-मात्रा-डॉकर

इस प्रश्न के लिए

मैं नोडज एप्लिकेशन बनाने और फिर इसे s3 बाल्टी में तैनात करने के लिए जेनकींस पाइपलाइन में एडब्ल्यूएस सीएलआई कमांड का उपयोग करने की कोशिश कर रहा हूं।

अगर आप AWS के अंदर हैं, तो आप IAM भूमिका और आपको होस्ट कुंजियों को बाइंड करने की आवश्यकता नहीं होगी।

या यदि आप AWS से बाहर हैं, तो आपको बस बाइंड होस्ट aws config और क्रेडेंशियल्स की आवश्यकता है,

docker run -d -p 8080:8080 -p 50000:50000 -v ~/jenkins_directory:/var/jenkins_home -v $HOME/.aws/:/var/jenkins_home/.aws/ jenkins/jenkins:2.190.2
1
Tibebes. M 28 सितंबर 2020, 22:30