2014-07-21 14 views
6

मेरी तैनाती रणनीति के हिस्से के रूप में, मैं अपस्टार्ट के साथ डॉकर कंटेनर प्रबंधित कर रहा हूं।इसे शुरू करने के बिना छवि से डॉकर कंटेनर बनाएं

कि ऐसा करने के लिए, मैं एक रजिस्ट्री से एक छवि खींच और (के रूप में Upstart script to run container won't manage lifecycle पर सुझाव) एक नामित कंटेनर बनाने के लिए

वहाँ पहली छवि चलने के बिना कंटेनर बनाने के लिए एक रास्ता है की जरूरत है? मैं एक कंटेनर शुरू नहीं करना चाहता (जो साइड इफेक्ट्स पेश कर सकता है), इसे रोकें, और फिर कहीं और प्रबंधित करें।

उदाहरण के लिए, कुछ की तरह:

docker.io create -e ENV1=a -e ENV2=b -p 80:80 --name my_first_container sample/containe 

उत्तर

3

आपको लगता है कि प्राप्त कर सकते हैं Docker Remote API का उपयोग करके।

सबसे पहले समायोजित करें कि डॉकर डिमन कैसे चल रहा है। यह डिफ़ॉल्ट यूनिक्स सॉकेट के अलावा बंदरगाह 4243 पर HTTP अनुरोध को सुनने के लिए कॉन्फ़िगर करें: अब

sudo sh -c "echo 'DOCKER_OPTS=\"-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock\"' > /etc/default/docker" 

, आप इसे चलने के बिना एक कंटेनर बनाने के लिए /containers/create endpoint उपयोग कर सकते हैं:

curl -X POST -H "Content-Type: application/json" http://localhost:4243/containers/create?name=my_first_container -d ' 
{ 
    "Name": "dtest2", 
    "AttachStdin": "false", 
    "AttachStdout": "false", 
    "AttachStderr": "false", 
    "Tty": "false", 
    "OpenStdin": "false", 
    "StdinOnce": "false", 
    "Cmd":["/bin/bash", "-c", "echo Starting;sleep 20;echo Stopping"], 
    "Image": "ubuntu", 
    "DisableNetwork": "false" 
} 
' 

वेतन ध्यान ?name=my_first_container पैरामीटर के लिए मैंने कर्ल अनुरोध url में जोड़ा। इस प्रकार आप अपने कंटेनर का नाम देते हैं।

साइड नोट - HTTP इंटरफेस को जोड़ने के बिना भी हासिल किया जा सकता है, हालांकि एक सरल कर्ल POST अनुरोध का उपयोग करके समाधान दिखाना आसान लगता है।

+0

मैं दुनिया के पढ़ने योग्य होने के लिए http इंटरफ़ेस नहीं जोड़ूंगा (या यहां तक ​​कि लोकहोस्ट द्वारा भी, डॉकर समुदाय ने पहले ही चर्चा की है) यूनिक्स सॉकेट के साथ समकक्ष कमांड है? –

+0

@MarshallAnschutz [सुरक्षित करने के तरीके] हैं (http://blog.james-carr.org/2013/10/30/securing-dockers-remote-api/) डॉकर का http इंटरफ़ेस। यदि आप यूनिक्स सॉकेट से सीधे बातचीत करना चाहते हैं, तो आप 'echo -e' POST/कंटेनर/create? Name = dtest8 HTTP/1.1 ....... "चलाकर HTTP अनुरोध भेज सकते हैं। एनसी-यू/var/run/docker.sock' –

+0

मैं इस काम को ठीक से करने के लिए पायथन इंटरफ़ेस की ओर झुका रहा हूं। यह प्रबंधन के सबसे साहसी तरीके प्रतीत होता है –

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