2013-07-30 10 views
31

डॉकर का उपयोग करके, आप अन्य छवियों के आधार पर छवियों को बहुत अच्छी तरह से बना सकते हैं। उदाहरण के लिए, आप एक छवि जावा-जेडीके 7 (नवीनतम उबंटू एलटीएस के आधार पर) बना सकते हैं, और उस पर आधारित छवियों को लोचदार-खोज और tomcat7 (जिनमें से दोनों जावा की आवश्यकता है) बनाते हैं। प्रश्न के लिएडॉकर छवि निर्भरताओं (रखरखाव) का प्रबंधन कैसे करें

╔══════════════════════╦════════╦══════════════╗ 
║  REPOSITORY  ║ TAG ║  ID  ║ 
╠══════════════════════╬════════╬══════════════╣ 
║ ubuntu    ║ 12.04 ║ 8dbd9e392a96 ║ 
║ quintenk/jdk7-oracle ║ latest ║ 8928245086f4 ║ 
║ quintenk/tomcat7  ║ latest ║ 995cdb2cbfa8 ║ 
║ quintenk/elastics ║ latest ║ 123abc456ef2 ║ 
╚══════════════════════╩════════╩══════════════╝ 

अब:

तो, अगर मैं अपनी छवियों को टैग नहीं करते, मैं निम्नलिखित (docker images के उद्धरण) के साथ समाप्त। मैं इस निर्भरता को कैसे बनाए रखूं? मैं एक 1 छवि और आश्रित छवियों को बनाए रखने का प्रदर्शन कैसे करूं?

  1. यदि मैं अपनी जेडीके छवि (उदाहरण के लिए apt-get upgrade) अद्यतन करता हूं, तो मुझे लगता है कि मैं निर्भर छवियों को दूषित नहीं करता हूं? हालांकि, मैं यह भी मानता हूं कि निर्भरता पेड़ ऐसा नहीं है जैसा आप अब उम्मीद करेंगे। [अद्यतन: मैंने इसे पुन: उत्पन्न किया है, इसलिए नीचे अपना उत्तर देखें]
  2. यदि 1 सही है, तो क्या कोई तरीका है कि मैं आश्रित छवियों को पुराने रूप में ध्वजांकित कर सकता हूं, और (उम्मीद है) उन्हें स्वयं का पुनर्निर्माण कर सकता है?

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

अद्यतन: मुझे डॉकर साइट पर presentation में निम्न छवि मिली। हालांकि, मुझे यह सुनिश्चित करने के चरणों पर पूरा यकीन नहीं है (विशेष रूप से अन्य छवियों पर निर्भरताओं के साथ जैसा कि मैंने वर्णन किया है)।

Update flow for docker containers

+0

क्या http://docs.docker.com/docker-hub/builds/#repository- आपके इच्छित समाधान को जोड़ता है? यदि वे अपनी मूल छवियों में परिवर्तन करते हैं तो यह सभी निर्भर छवियों को फिर से निर्मित करता है। –

+0

@WeiChing वास्तव में - यह नया जवाब होगा। बेशक - स्वचालित परीक्षण के बिना यह एक बुरी बात है – qkrijger

उत्तर

9

यह एक बढ़िया उपयोग है। कृपया Docker issues page पर एक वृद्धि अनुरोध सबमिट करें।

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

+0

बस किया। मैं इसे अभी तक नहीं देखता, इसलिए मुझे लगता है कि इसे प्रकाशित होने से पहले इसकी समीक्षा की जाएगी। – qkrijger

+2

यह वृद्धि अनुरोध है: https: // github।com/dotcloud/docker/issues/1379 जो इस के पक्ष में बंद था: https://github.com/dotcloud/docker/issues/2936 – seanf

5

जवाब में

अगर मैं अद्यतन करने के लिए मेरी JDK छवि (apt-get उदाहरण के लिए उन्नयन), मैं मैं भ्रष्ट निर्भर छवियों नहीं मान? हालांकि, मैं यह भी मानता हूं कि निर्भरता पेड़ ऐसा नहीं है जैसा आप अब उम्मीद करेंगे।

मैंने इसे एक निर्भर छवि अद्यतन करके और निर्भरताओं की जांच करके सत्यापित किया है। क्या आप प्राप्त वास्तव में एक वैध राज्य है, लेकिन निर्भर छवि छवि पर आधारित नहीं है आप भोलेपन से किसी भी अब उम्मीद थी:

docker dependency tree

0

मैं multi-stage builds का उपयोग कर भी इस तरह के नुकसान से बचने में सहायक हो सकता है लग रहा है। यह आपको प्रति एप्लिकेशन एकल डॉकरफ़ाइल रखने में मदद करेगा।

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