2016-11-18 21 views
8

के लिए स्टार्टअप स्क्रिप्ट मेरे पास पहले से चलने वाला डॉकर कंटेनर है। मैंने कुछ कॉन्फ़िगरेशन परिवर्तन किए हैं, मान लें कि कंटेनर के अंदर/etc/hosts में कुछ होस्ट जानकारी शामिल है। मैं परिवर्तनों को कैसे सहेज सकता हूं, ताकि अगली बार जब मैं कंटेनर में एक इंटरैक्टिव खोल खोलूं तो मुझे वही सामान फिर से करने की ज़रूरत नहीं है? अभी के लिए मैंने कंटेनर के अंदर नीचे addhosts.sh के रूप में एक मिनी स्क्रिप्ट बनाई है और इसे हर बार चलाने के लिए है।डॉकर कंटेनर

echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

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

उत्तर

8

आपने ऐसे बदलाव आपके द्वारा किए गए प्रतिबद्ध कर सकते हैं:

लघु कमान संदर्भ:

docker commit <container id or name> <repository name>/<your image name>:<tage aka version> 

उदाहरण:

docker commit c3f279d17e0a svendowideit/testimage:version3 

पूर्ण संदर्भ:

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

फिर आप प्रतिबद्धता के बाद अपनी नई छवि देखने के लिए docker images का उपयोग कर सकते हैं।

अपने नए छवि से एक कंटेनर चलाने के लिए: dockerfile, मैं बस इसे यहां डाल रहा हूं बस बैठाना हम दूसरों की मदद कर सकते हैं:

docker run -d svendowideit/testimage:version3 <optional startup command>

एक और तरीका है के माध्यम से अपनी स्वयं की छवि बनाने की जाएगी।

+0

अपने शीघ्र उत्तर के लिए धन्यवाद। क्या यह बाहरी कंटेनरों पर भी लागू होता है? Coz मेरे कंटेनर बाहर निकला है। मैंने कंटेनर के लिए डॉकर प्रतिबद्ध किया और फिर बाहर निकला, शुरू किया और इसे संलग्न किया। लेकिन मैं अपनी विन्यास को बरकरार नहीं देखता हूं। –

+0

आप अपना कंटेनर कैसे शुरू करते हैं? आपको बनाए गए संस्करण को शामिल करना चाहिए।उदाहरण के लिए के रूप में 'डोकर रन svendowideit/testimage: –

+1

version3' से नीचे चल रहा द्वारा: ' डोकर शुरू 44372579f2ea' 'डोकर देते 44372579f2ea' –

2

अपने कंटेनर का स्नैपशॉट लेने के लिए docker commit का उपयोग करें।

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 

Create a new image from a container's changes 

Options: 
    -a, --author string Author (e.g., "John Hannibal Smith <[email protected]>") 
    -c, --change value  Apply Dockerfile instruction to the created image (default []) 
     --help    Print usage 
    -m, --message string Commit message 
    -p, --pause   Pause container during commit (default true) 

Example: docker commit c3f279d17e0a svendowideit/testimage:version3

https://docs.docker.com/engine/reference/commandline/commit/

करने के लिए पर नज़र एक डोकर कंटेनर का एक स्नैपशॉट चलाने कमांड को चलाने के लिए संस्करण जोड़ने है। उदाहरण के लिए के रूप में चलाने के

docker run svendowideit/testimage:version3

4

मान लिया जाये कि आप एक नई छवि में परिवर्तन सहेजने के लिए इच्छा नहीं है:

docker exec -it container_id echo "1.2.3.4 server1.example.com gluster1" >> /etc/hosts 
docker exec -it container_id echo "5.6.7.8 server2.example.com gluster2" >> /etc/hosts 

यही कारण है, कंटेनर से कनेक्ट होता कंटेनर की हत्या के बिना आदेश और बाहर निकलने चलाते हैं।

सूचना निम्नलिखित के बीच अंतर:

docker exec -it container_id ... = does not kill the container. 
docker run -it container_id ...= kills the container 
संबंधित मुद्दे