2015-01-09 8 views
7

मैं एक EC2 सर्वर डोकर चल रहा है और इसके बाद सर्वर प्रारंभ होता है, इसलिए है कि मैं User Data तो मेरी निजी Dockerhub छवियों लिया जाएगा/रन के लिए निम्न जोड़ना चाहते हैं:एक निजी डॉकरब रेपो से एक डॉकर चलाने के लिए स्वचालित कैसे करें?

#!/bin/bash 
sudo docker run -p 3333:3333 -d --name Hello myusername/hello 

लेकिन मैं मैं निजी रेपो myusername/hello तक पहुंच प्राप्त करने के लिए प्रमाणीकरण के बारे में कैसे अनिश्चित हूं, इस बारे में अनिश्चित हूं।

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

उत्तर

4

अद्यतन: एक और भी बेहतर तरीका है कि सब पर एक छवि में अपने creds पाक को शामिल नहीं करता पता चल। जानकारी के लिए निम्न प्रश्न देखें जो इस समस्या को हल करने के लिए भी लागू होगा: Is it secure to store EC2 User-Data shell scripts in a private S3 bucket?

इससे किसी भी समय आवश्यक स्थानों की कम से कम संख्या में आपके रहस्यों को रखने में मदद मिलती है।


एक बेहतर तरीका खोज निकाला:

  1. लॉन्च एक मशीन का उपयोग करके वांछित ओएस
  2. डोकर
  3. रन sudo docker login स्थापित करें कि मशीन
  4. पर सफल प्रमाणीकरण डोकर पर आपकी होम निर्देशिका में .dockercfg फ़ाइल रखेगी (उदाहरण के लिए /home/yourusername/.dockercfg)। डॉकर अब से सभी प्रमाणीकरण के लिए इस फ़ाइल का उपयोग करेगा।
  5. सभी नए उदाहरण लॉन्च करते समय उपयोग करने के लिए अपनी मशीन की एक छवि बनाएं। इस छवि में अब .dockercfg फ़ाइल बेक्ड-इन होगी। जब आप अपने मशीन छवि पर आधारित एक उदाहरण का शुभारंभ अपने sudo docker run आदेशों निजी रेपोस खींच में सफल होगा उपयोगकर्ता प्रदान की
#!/bin/bash 
sudo docker run -p 3333:3333 -d --name Hello yourusername/hello 

अब:

  • अपने मशीन छवि के User Data के लिए निम्न जोड़ें आप डॉकर कमांड को चलाने के लिए .dockercfg फ़ाइल को अपनी होम निर्देशिका में चलाते हैं।

    आशा है कि किसी को भी इसे समझने में मदद मिलेगी।

  • 2

    अद्यतन:


    आप लॉन्च होने पर एक निजी Dockerhub रेपो खींचने के लिए एक उदाहरण प्राप्त करने के लिए एक बेहतर तरीका अपने User Data स्क्रिप्ट में अपने creds हार्ड-कोड की आवश्यकता नहीं है कि के लिए मेरे दूसरे सवाल का जवाब देखें अपने sudo docker run आदेश से पहले User Data शुरू हुआ लिपि में sudo docker login चलाकर बस प्रमाणित कर सकते हैं, पूरी तरह तो जैसे:

    #!/bin/bash 
    sudo docker login -u <username> -p <password> -e <email> 
    sudo docker run -p 3333:3333 -d --name Hello myusername/hello 
    

    यह requi अपने डॉकरहब क्रेडिट को अपने User Data स्क्रिप्ट में हार्ड-कोडिंग करना, जो आदर्श से कम है, लेकिन यह काम करता है।

    2

    यदि आप ईसीएस (जो आपके लिए ईसी 2 इंस्टेंस/एस बनाता है) का उपयोग करने की देखभाल करते हैं तो मुझे एक बेहतर तरीका पता चला है और आप अपने समाधान में फ़ाइल संग्रहण का उपयोग नहीं करना चाहते हैं। मैं समाधान @AJB ने सुझाव दिया मिश्रित ('उपयोगकर्त्ता डेटा' संपत्ति और 'डोकर लॉगिन' उत्पादन), मैं प्रक्रिया का वर्णन करेंगे:

    1. उपयोग docker login अपने मशीन (कोई sudo की जरूरत पर जहाँ तक मैं कर सकते हैं बता), सफल प्रवेश रन cat .docker/config.json पर और आप की तरह कुछ मिल जाएगा:

    {"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}

    1. पुलिस y KEY और EMAIL अलग
    2. ईसीएस पर
    3. - बनाने के एक cluster, service और एक task definition (छवि संपत्ति yourusername/hello करने के लिए सेट के साथ), यह स्वचालित रूप से EC2
    4. EC2 मेनू पर के लिए विन्यास उत्पन्न होगा - विन्यास लॉन्च करने के लिए जाना मेनू और launch configuration ईसीएस द्वारा उत्पन्न चुनें
    5. copy launch configuration बटन और संपादित पर
    6. क्लिक स्वाद के लिए (आप एएमआई बदल सकते हैं, हालांकि मैं जब तक आप के लिए, एक नया विवरणात्मक नाम निर्धारित किया है Amazon Linux AMI साथ रहने की सलाह देते हैं)
    7. विवरण संपादित अंदर -> उन्नत डेटाई ls उपयोगकर्ता डेटा संपत्ति को संपादित करें और निम्न (कुंजी और EMAIL की जगह) जोड़ें:
    mkdir /home/ec2-user/.docker/ 
    echo '{"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}' >> /home/ec2-user/.docker/config.json 
    sudo stop ecs 
    sudo start ecs 
    
    1. ऑटो स्केलिंग समूह मेनू करने के लिए स्विच और एक उत्पन्न चुनें ईसीएस
    2. द्वारा
    3. क्लिक संपादित करें और आपने अभी बनाया लॉन्च कॉन्फ़िगरेशन चुनें, उदाहरण के लिए मेनू बचाने
    4. स्विच और चल उदाहरण
    5. आपका काम हो गया समाप्त!

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

    +0

    यह एकमात्र समाधान है जो काम करता है। एडब्ल्यूएस बेकार है। – harishkashyap

    +0

    हाँ मुझे लगता है कि यह एक बग है। मैंने दोनों http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html और http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private- auth.html जो काम नहीं करता (दोनों प्रकार के प्रकार के साथ); एक सुरक्षित पक्ष होने के लिए मैं अपने डॉकर हब प्रमाण-पत्रों को /etc/ecs/ecs.config पर भी लिखता हूं। – Ethan

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