जब कंटेनर बाहर निकलता है तो मैं अपना डेटा खो देता हूं


394

डोकर के बावजूद इंटरैक्टिव ट्यूटोरियल और पूछे जाने वाले प्रश्न मैं अपने डेटा जब कंटेनर बाहर निकलता है खो देते हैं।

मैंने यहां बताए अनुसार डॉकर को स्थापित किया है: http://docs.docker.io/en/latest/installation/ubuntulinux बिना किसी समस्या के ubuntu 13.04 पर।

लेकिन यह सभी डेटा खो देता है जब बाहर निकलता है।

iman@test:~$ sudo docker version
Client version: 0.6.4 
Go version (client): go1.1.2 
Git commit (client): 2f74b1c 
Server version: 0.6.4 
Git commit (server): 2f74b1c 
Go version (server): go1.1.2 
Last stable version: 0.6.4 


iman@test:~$ sudo docker run ubuntu ping
2013/10/25 08:05:47 Unable to locate ping 
iman@test:~$ sudo docker run ubuntu apt-get install ping
Reading package lists... 
Building dependency tree... 
The following NEW packages will be installed: 
  iputils-ping 
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 
Need to get 56.1 kB of archives. 
After this operation, 143 kB of additional disk space will be used. 
Get:1 http://archive.ubuntu.com/ubuntu/ precise/main iputils-ping amd64 3:20101006-1ubuntu1 [56.1 kB] 
debconf: delaying package configuration, since apt-utils is not installed 
Fetched 56.1 kB in 0s (195 kB/s) 
Selecting previously unselected package iputils-ping. 
(Reading database ... 7545 files and directories currently installed.) 
Unpacking iputils-ping (from .../iputils-ping_3%3a20101006-1ubuntu1_amd64.deb) ... 
Setting up iputils-ping (3:20101006-1ubuntu1) ... 
iman@test:~$ sudo docker run ubuntu ping
2013/10/25 08:06:11 Unable to locate ping 
iman@test:~$ sudo docker run ubuntu touch /home/test
iman@test:~$ sudo docker run ubuntu ls /home/test
ls: cannot access /home/test: No such file or directory 

मैंने उसी परिणाम के साथ संवादात्मक सत्रों के साथ इसका परीक्षण भी किया। क्या मैं कुछ भूल गया?

संपादित करें: नए डॉक्टर उपयोगकर्ताओं के लिए महत्वपूर्ण

जैसा कि @ मोहम्मद-नोरेल्डिन और अन्य ने कहा, वास्तव में यह एक कंटेनर से बाहर निकलने वाला नहीं है । हर बार यह सिर्फ एक नया कंटेनर बनाता है।


10
इसे " कंटेनर एक्साइटिंग " नहीं कहा जा सकता है , आप सिर्फ एक नया कंटेनर बना रहे हैं, एक्साइटिंग शब्द का उपयोग बहुत कुछ भ्रमित कर सकता है (मैं उस वजह से भी भ्रमित था)।
मोहम्मद नौरेलिन 15

1
@MohammedNoureldin, आप सही हैं, बाहर निकलना सही नहीं है, लेकिन यह वही है जो आपने, मैंने और दूसरों ने सोचा था। तो यह प्रश्न में एक बेहतर शब्द है, आपका संपादन प्रश्न का उत्तर बनाता है! नए खोजकर्ता यहां नहीं मिलेंगे!
इमान

डॉकर के साथ मेरे बहुत शुरुआती बिंदु पर, मैंने सोचा कि वास्तव में आपके प्रश्न के कारण, मुझे पता है कि पता बस गलत है। नए शीर्षक की समीक्षा की गई और स्वीकार किया गया, मुझे समझ में नहीं आया कि क्यों किसी को गलत शीर्षक पर जोर देना चाहिए, यह आपकी प्रतिक्रिया है, और आपकी निराशा है।
मोहम्मद नौरेलिन

3
मैं @MohammedNoureldin से सहमत हूं। विशिष्ट शीर्षक, उदाहरण और स्वीकृत उत्तर का संयोजन भविष्य के पाठकों और विशेष रूप से शुरुआती को समझने में मदद नहीं करता है Docker। मैं शीर्षक और मूल प्रश्न रखने का प्रस्ताव करूंगा, क्योंकि शुरुआती निश्चित रूप से कुछ इस तरह की खोज करेंगे। लेकिन, आपने पोस्ट लिखने के समय अपनी गलतफहमी का वर्णन करते हुए कुछ क्यों नहीं जोड़ा। यह चीजों को स्पष्ट करने में मदद करेगा। यह हमारी संस्कृति यहाँ SO पर है ... है ना? :-)
tgogos

2
मैं ... हर बार यू से बाहर निकलने के यू अपने कंटेनर वह न चल पाए शुरू कर दिया है ... एक छवि चलाने agane एक नए कंटेनर इस वसीयत मदद डोकर शुरू <कंटेनर आईडी> डोकर देते हैं बनाने के इस समस्या थी <कंटेनर आईडी>
fatemeh

जवाबों:


399

आपको कंटेनर में किए गए परिवर्तनों को करने और फिर उसे चलाने की आवश्यकता है। इसे इस्तेमाल करे:

sudo docker pull ubuntu

sudo docker run ubuntu apt-get install -y ping

फिर इस कमांड का उपयोग करके कंटेनर आईडी प्राप्त करें:

sudo docker ps -l

कंटेनर में परिवर्तन करें:

sudo docker commit <container_id> iman/ping 

फिर कंटेनर चलाएँ:

sudo docker run iman/ping ping www.google.com

यह काम करना चाहिए।


9
इसलिए मुझे डेटा को संरक्षित करने के लिए प्रत्येक रन के बाद प्रतिबद्ध का उपयोग करना चाहिए ।
इमान

5
कमिट का उपयोग केवल तभी किया जाना चाहिए जब आप कंटेनर में चेंज करते हैं (जैसे नए टूल या डेटा को इंस्टॉल करना) ताकि उन परिवर्तनों को बचाया जा सके और अगली बार जब आप उस इमेज से एक नया कंटेनर चलाते हैं, तो यह अंतिम सेव के बिंदु से शुरू होगा या प्रतिबद्ध, अपने डेटा को संरक्षित करना।
Unferth

7
@ यदि मैं बदलाव करना चाहता हूं तो क्या होगा? अब तक यह अधिक छवियों के साथ बनाता है <none>। मैं मौजूदा छवि के शीर्ष पर प्रतिबद्ध को कैसे जोड़कर रखूं?
मार्कोनी

62
आकस्मिक रूप से किए गए परिवर्तन "docker way" नहीं हैं। DOCKERFILE का उपयोग करें।
user2105103

23
आप कंटेनर के भीतर से कैसे करेंगे? निम्नलिखित परिदृश्य पर विचार करें: 1) मैं कंटेनर को इस तरह से चला रहा हूं: docker run -i -t myimage / bin / bash 2) मैं कुछ बदलाव करता हूं 3) मैं कंटेनर के भीतर से कोई अपराध नहीं कर सकता, इसलिए जब मैं कंटेनर से बाहर निकलता हूं, तो मैं मेरे पिछले परिवर्तनों को करने का मौका दिए बिना, मेरे सभी डेटा को ढीला कर देगा
qicicup

374

जब आप docker runएक कंटेनर शुरू करने के लिए उपयोग करते हैं , तो यह वास्तव में आपके द्वारा निर्दिष्ट छवि के आधार पर एक नया कंटेनर बनाता है

अन्य उपयोगी उत्तरों के अलावा, ध्यान दें कि आप मौजूदा कंटेनर को बाहर निकलने के बाद फिर से चालू कर सकते हैं और आपके परिवर्तन अभी भी हैं।

docker start f357e2faab77 # restart it in the background
docker attach f357e2faab77 # reattach the terminal & stdin

88
docker psआपको केवल डॉकटर कंटेनर चलाने का पता चलता है। docker ps -aआपको वह भी दिखाता है जो बाहर निकल चुका है - और आप भागते रह सकते हैं। प्रत्येक रन के बाद एक प्रतिबद्धता केवल आवश्यक है यदि आप भविष्य में उपयोग के लिए एक स्नैपशॉट बनाना चाहते हैं, अन्यथा कंटेनर स्वयं आपके लिए उपयोग करने के लिए चारों ओर चिपक जाएगा।
user1278519

2
कृपया सवाल करें, इसलिए यदि मैं एक jenkinsसर्वर डॉक डाउनलोड करता हूं और मैं इसे अपने ci होस्ट पर चलाता हूं और यह मेरे पास कुछ नौकरियां चलाता है और परिणामस्वरूप jenkins सर्वर कुछ लॉग को डिस्क करने के लिए लिखता है। अब अगर मेरा सर्वर (जिसने मेरे docker को होस्ट किया है) को फिर से शुरू किया गया है और मैं फिर से अपने jenkins docker को शुरू करता हूँ तो इसका मतलब होगा कि मैंने सभी लॉग फाइल खो दी हैं? अगर ऐसा है तो मैं संभवतः jenkinsसीआई पर अपने जेनकींस इंस्टॉलेशन को कम करने के लिए उदाहरण के लिए डॉक का उपयोग कैसे कर सकता हूं ?
जस

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

7
यहां से बाहर निकलने के बाद कंटेनर से फ़ाइलों को कॉपी करने का एक आसान तरीका है:docker cp $(docker ps -alq):/path/to/file .
जोश हबडास

3
आप नाम से एक कंटेनर शुरू और संलग्न कर सकते हैं। (उदाहरण के लिए docker run -it --name my_debian debianऔर बाद में docker start my_debian && docker attach my_debian)
जॉनी विलर

127

कंटेनर डेटा को जारी रखने के निम्नलिखित तरीके हैं:

  1. डॉकटर की मात्रा

  2. डॉकटर कमिट

    ए) ubuntu छवि से कंटेनर बनाते हैं और एक बैश टर्मिनल चलाते हैं।

       $ docker run -i -t ubuntu:14.04 /bin/bash
    

    बी) टर्मिनल के अंदर कर्ल स्थापित करें

       # apt-get update
       # apt-get install curl
    

    ग) कंटेनर टर्मिनल से बाहर निकलें

       # exit
    

    डी) निम्नलिखित आदेश को निष्पादित करके अपने कंटेनर आईडी पर ध्यान दें:

       $ docker ps -a
    

    ई) कंटेनर को नई छवि के रूप में सहेजें

       $ docker commit <container_id> new_image_name:tag_name(optional)
    

    च) सत्यापित करें कि आप अपनी नई छवि को स्थापित कर्ल के साथ देख सकते हैं।

       $ docker images           
    
       $ docker run -it new_image_name:tag_name bash
          # which curl
            /usr/bin/curl
    

क्या यह exitपहले आवश्यक है docker commit? धन्यवाद।
अभिषेक आनंद

2
@AbhishekAnand हाँ, क्योंकि docker runकमांड के साथ आप कंटेनर में बैश चलाते हैं -iऔर -tविकल्प (TTY के साथ इंटरएक्टिव) के कारण आप वहां रहते हैं । हालाँकि, Docker आपके मशीन पर, कंटेनर के बाहर चलता है, इसलिए कंटेनर के अंदर से आवश्यक परिवर्तन करने के बाद, अपने सिस्टम के शेल पर वापस जाने के लिए आपको exitकंटेनर का शेल (या Ctrl + D) करना होगा। यह भी ध्यान रखें #और $जवाब है, जो विभिन्न गोले आदेशों के लिए लिखा जाता संकेत मिलता है।
एरिक

त्वरित प्रश्न: यदि मैं प्रतिबद्ध नहीं हूं, तो मैंने डेटा खो दिया है। यह स्पष्ट है। लेकिन जब मैं नेगनेक्स कॉन्फ़िगरेशन को बदलता हूं, तो यह अपडेट क्यों रहता है? (कोई ज़रूरत नहीं है) @ एरिक
grep

@grep यदि आपके पास एक स्पष्ट और प्रतिलिपि प्रस्तुत करने योग्य MWE है, तो कृपया इसके बारे में नया प्रश्न पूछें, अगर इस विशिष्ट उपयोग के मामले के बारे में कोई पहले से ही नहीं है।
एरिक

3. docker stopइसके बाद docker start
कारपेंटर

59

Unferth के उत्तर के अलावा , डॉकफाइल बनाने की सिफारिश की गई है

एक खाली निर्देशिका में, निम्नलिखित सामग्रियों के साथ "डॉकरीफाइल" नामक एक फ़ाइल बनाएं

FROM ubuntu
RUN apt-get install ping
ENTRYPOINT ["ping"]

Dockerfile का उपयोग करके एक छवि बनाएं । आइए एक टैग का उपयोग करें ताकि हमें हेक्साडेसिमल छवि संख्या याद रखने की आवश्यकता न हो।

$ docker build -t iman/ping .

और फिर एक कंटेनर में छवि को चलाएं

$ docker run iman/ping stackoverflow.com

1
कभी भी इसे मैन्युअल रूप से एक से अधिक बार करने की आवश्यकता नहीं है। एक परिणाम बनाएं, प्रतिबद्ध करें और परिणामी छवि अपलोड करें। पुल ने कहा कि छवि आगे बढ़ रही है।
ब्रैंडन बर्टेल्सन

11

मुझे आपके प्रश्न का बहुत सरल उत्तर मिल गया है, निम्नलिखित दो कमांड चलाएं

sudo docker run -t -d ubuntu --name mycontainername /bin/bash
sudo docker ps -a

उपरोक्त ps -a कमांड सभी कंटेनरों की सूची देता है। उस कंटेनर का नाम लें जो छवि नाम का संदर्भ देता है - 'ubuntu'। docker auto उदाहरण के लिए कंटेनरों के लिए नाम बनाता है - 'lightlyxuyzx', यदि आप --name विकल्प का उपयोग नहीं करते हैं।

-T और -d विकल्प महत्वपूर्ण हैं, निर्मित कंटेनर को अलग कर दिया जाता है और -t विकल्प के साथ नीचे दिए गए अनुसार इसे फिर से जोड़ा जा सकता है।

--Name विकल्प के साथ, आप अपने कंटेनर को मेरे मामले में 'mycontainername' नाम दे सकते हैं।

sudo docker exec -ti mycontainername bash

और यह उपरोक्त कमांड आपको बैश शेल के साथ कंटेनर में प्रवेश करने में मदद करता है। इस बिंदु पर आपके द्वारा कंटेनर में किए गए किसी भी परिवर्तन से स्वचालित रूप से डॉकटर द्वारा बचा लिया जाता है। उदाहरण के लिए - apt-get install curlकंटेनर के अंदर आप बिना किसी समस्या के कंटेनर से बाहर निकल सकते हैं, डॉकटर ऑटो परिवर्तनों को बचाता है।

अगले उपयोग पर, आपको बस इतना करना है कि जब भी आप इस कंटेनर के साथ काम करना चाहते हैं, इन दो कमांडों को चलाएं।

यह नीचे कमांड बंद कंटेनर को शुरू करेगा:

sudo docker start mycontainername

sudo docker exec -ti mycontainername bash

बंदरगाहों और एक साझा स्थान के साथ एक और उदाहरण नीचे दिया गया है:

docker run -t -d --name mycontainername -p 5000:5000 -v ~/PROJECTS/SPACE:/PROJECTSPACE 7efe2989e877 /bin/bash

मेरे मामले में: 7efe2989e877 - पिछले कंटेनर का इमेजिड है, जिसे मैंने उपयोग करके प्राप्त किया है

docker ps -a


4
उबटन 18.04 पर डॉकर 18.09.2 के साथ यह काम नहीं करता है। यह काम करता है अगर मैं --nameछवि नाम से पहले विकल्प और विकल्प रखता हूं , जैसे:docker run --name mycontainername -t -d ubuntu /bin/bash
स्टीफन गौरिचोन

9

यदि आप अपने कंटेनर में डेटा को जारी रखना चाहते हैं, तो आप docker संस्करणों को देखना चाहते हैं। यात्रा https://docs.docker.com/engine/tutorials/dockervolumes/ । Docker प्रलेखन शुरू करने के लिए एक बहुत अच्छी जगह है


3

मेरा सुझाव है कि डॉक कंपोज़ करना है। अपनी परियोजना के लिए सभी डॉकटर के कंटेनरों को प्रबंधित करने का एक आसान तरीका है, आप संस्करणों को मैप कर सकते हैं और एक साथ काम करने के लिए विभिन्न कंटेनरों को जोड़ सकते हैं।

डॉक्स डॉक्स डॉक्स की तुलना में समझने में बहुत सरल हैं।

डॉकर-कंपोज डॉक्स

श्रेष्ठ


3

पूछे गए प्रश्न के ऊपर वास्तव में महान जवाब हैं। किसी अन्य उत्तर की आवश्यकता नहीं हो सकती है, लेकिन फिर भी मैं इस विषय पर अपनी व्यक्तिगत राय सरल शब्दों में देना चाहता हूं।

यहाँ कंटेनरों और चित्रों के बारे में कुछ बिंदु दिए गए हैं जो हमें निष्कर्ष निकालने में मदद करेंगे:

  • एक डॉकटर छवि हो सकती है :
    1. बनाया-से-एक दिया-कंटेनर
    2. हटाए गए
    3. इस्तेमाल किया करने के लिए बनाने के किसी भी संख्या के-कंटेनर
  • एक डॉकटर कंटेनर हो सकता है :
    1. बनाया-से-एक छवि
    2. शुरू कर दिया है
    3. रोका हुआ
    4. पुन: प्रारंभ
    5. हटाए गए
    6. इस्तेमाल किया करने के लिए बनाने के किसी भी संख्या के-छवियों
  • एक डॉक चलाने वाला कमांड यह करता है :
    1. एक छवि डाउनलोड करता है या कैश्ड छवि का उपयोग करता है
    2. इसमें से एक नया कंटेनर बनाता है
    3. कंटेनर शुरू करता है
  • जब एक डॉकरीफाइल का उपयोग छवि बनाने के लिए किया जाता है :
    1. यह पहले से ही अच्छी तरह से ज्ञात है कि छवि को अंततः डॉकटर कंटेनर चलाने के लिए उपयोग किया जाएगा।
    2. Docker build कमांड जारी करने के बाद, docker पीछे के दृश्य बेस-फाइल-सिस्टम के साथ एक रनिंग कंटेनर बनाता है और डेवलपर्स के अनुसार उस कंटेनर को कॉन्फ़िगर करने के लिए Dockerfile के अंदर चरणों का पालन करता है।
    3. कंटेनर को डॉकरफाइल के चश्मे के साथ कॉन्फ़िगर किए जाने के बाद, यह एक छवि के रूप में प्रतिबद्ध होगा।
    4. छवि रॉक एंड रोल के लिए तैयार हो जाती है!

निष्कर्ष :

जैसा कि हम देख सकते हैं, एक डॉक कंटेनर एक डॉक छवि से स्वतंत्र है।

एक कंटेनर को पुनः आरंभ किया जा सकता है बशर्ते उस कंटेनर की विशिष्ट आईडी [ docker ps --allआईडी प्राप्त करने के लिए उपयोग करें]

कोई भी ऑपरेशन जैसे नई निर्देशिका बनाना, फाइलें बनाना, उपकरण स्थापित करना आदि, कंटेनर के अंदर चलने पर किया जा सकता है। कंटेनर बंद हो जाने के बाद, यह सभी परिवर्तनों को जारी रखता है। कंटेनर को रोकना और पुनः आरंभ करना कंप्यूटर सिस्टम को रिबूट करने जैसा है।

एक पहले से बना कंटेनर हमेशा पुनरारंभ के लिए उपलब्ध होता है, लेकिन जब हम docker runकमांड जारी करते हैं , तो एक नया कंटेनर एक छवि से बना होता है और इसलिए यह एक नए कंप्यूटर सिस्टम की तरह होता है। पुराने कंटेनर के अंदर किए गए बदलाव - जैसा कि हम अब समझ सकते हैं - इस नए कंटेनर में उपलब्ध नहीं हैं।

एक अंतिम नोट :

मुझे लगता है कि यह अब स्पष्ट है कि डेटा क्यों खो गया लगता है अभी तक यह हमेशा है .. लेकिन एक अलग [पुराने] कंटेनर में। इसलिए, docker start& docker runकमांड में अंतर पर अच्छे से ध्यान दें और उनमें कभी भ्रमित न हों।


1

इसी तरह की समस्या (और कोई रास्ता नहीं Dockerfile अकेले इसे ठीक कर सकता है) मुझे इस पृष्ठ पर लाया।

चरण 0: सभी के लिए, उम्मीद है कि डॉकरफाइल इसे ठीक कर सकता है: जब तक -dns और --dns- खोज डॉकरफाइल समर्थन में दिखाई देंगे - इंट्रानेट आधारित संसाधनों को एकीकृत करने का कोई तरीका नहीं है।

स्टेज 1: डॉकरीफाइल का उपयोग करके छवि बनाने के बाद (वैसे यह एक गंभीर गड़बड़ है डॉकफेरफाइल वर्तमान फ़ोल्डर में होना चाहिए ), एक छवि को तैनात करने के लिए क्या इंट्रानेट आधारित है, डॉक रन स्क्रिप्ट चलाकर। उदाहरण: docker run -d \ --dns=${DNSLOCAL} \ --dns=${DNSGLOBAL} \ --dns-search=intranet \ -t pack/bsp \ --name packbsp-cont \ bash -c " \ wget -r --no-parent http://intranet/intranet-content.tar.gz \ tar -xvf intranet-content.tar.gz \ sudo -u ${USERNAME} bash --norc"

स्टेज 2: डॉक रन स्क्रिप्ट को डेमन मोड में लागू करना स्थानीय डेन्स रिकॉर्ड प्रदान करता है जिसमें स्थानीय सामान को डाउनलोड करने और तैनात करने की क्षमता होती है।

महत्वपूर्ण बिंदु: रन स्क्रिप्ट स्क्रिप्ट के समाप्त होने के /usr/bin/sudo -u ${USERNAME} bash --norcबाद भी कंटेनर को चालू रखने जैसी किसी चीज के साथ समाप्त होनी चाहिए ।

नहीं , यह पूर्ण स्वचालन पदार्थ के लिए संवादात्मक मोड में कंटेनर को चलाने के लिए संभव नहीं है क्योंकि यह आंतरिक के भीतर रहेगा जब तक CTRL-p CTRL-q दबाया नहीं जाएगा।

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

चरण 3: कंटेनर अभी भी पृष्ठभूमि में चल रहा है, लेकिन यह स्पष्ट नहीं है कि कंटेनर ने स्थापना प्रक्रिया को समाप्त कर दिया है या नहीं। निष्पादन प्रक्रिया को निर्धारित करने के लिए निम्नलिखित ब्लॉक का उपयोग करना: while ! docker container top ${CONTNAME} | grep "00[[:space:]]\{12\}bash \--norc" - do echo "." sleep 5 done स्क्रिप्ट पूर्ण स्थापना के बाद ही आगे बढ़ेगी। और यह कॉल करने का सही क्षण है: प्रतिबद्ध , वर्तमान कंटेनर आईडी और गंतव्य छवि नाम प्रदान करना (यह बिल्ड / रन प्रक्रिया के समान हो सकता है लेकिन स्थानीय इंस्टॉलेशन उद्देश्यों के साथ संलग्न है। उदाहरण: docker commit containerID pack/bsp:toolchainedइस लिंक को देखें। उचित कंटेनर कैसे प्राप्त करें

चरण 4: कंटेनर को स्थानीय इंस्टॉल के साथ अद्यतन किया गया है और साथ ही इसे नई सौंपी गई छवि (एक उद्देश्य वाले टैग जोड़े जाने) के लिए प्रतिबद्ध किया गया है। कंटेनर चलाना बंद करना अब सुरक्षित है। उदाहरण:docker stop packbsp-cont

स्टेज 5: किसी भी क्षण स्थानीय इंस्टॉल के साथ कंटेनर को चलाने की आवश्यकता होती है, इसे पहले सहेजे गए चित्र से शुरू करें। उदाहरण:docker run -d -t pack/bsp:toolchained


1

यहाँ एक शानदार जवाब है कि कैसे एक डॉक को जारी रखें जो उपयोगकर्ता किलोग्राम से बाहर निकलता है

docker start $(docker ps -a -q --filter "status=exited")
(or in this case just docker start $(docker ps -ql) 'cos you don't want to start all of them)

docker exec -it <container-id> /bin/bash

वह दूसरी पंक्ति महत्वपूर्ण है। इसलिए निष्पादन का उपयोग रन के स्थान पर किया जाता है, और एक छवि पर नहीं बल्कि एक कंटेनर पर। और आप इसे कंटेनर शुरू करने के बाद करते हैं।


0

कोई भी उत्तर इस डिज़ाइन पसंद के बिंदु को संबोधित नहीं करता है। मुझे लगता है कि इन 2 त्रुटियों को रोकने के लिए docker इस तरह से काम करता है:

  • फिर से शुरू
  • आंशिक त्रुटि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.