docker - आप कंटेनर पर ऑटो-रिस्टार्ट को कैसे निष्क्रिय करते हैं?


156

मैं ऑटो रीस्टार्ट को सक्षम कर सकता हूं --restart=always, लेकिन कंटेनर को रोकने के बाद, मैं उस विशेषता को कैसे बंद कर सकता हूं?

मैं आम तौर पर एक वेबसर्वर चलाता हूं और आमतौर पर पोर्ट 80 का नक्शा बनाता हूं:

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

लेकिन ऐसे समय होते हैं जब मैं अपनी छवि का एक नया संस्करण चलाना चाहता हूं, लेकिन मैं पुराने कंटेनर को चारों ओर रखना चाहता हूं। समस्या यह है कि अगर कई कंटेनर हैं --restart=always, तो उनमें से केवल एक (यादृच्छिक?) शुरू होता है क्योंकि वे सभी मेजबान पर पोर्ट 80 के लिए प्रतिस्पर्धा कर रहे हैं।

जवाबों:


326

आप --restart=unless-stoppedविकल्प का उपयोग कर सकते हैं , जैसा कि @ शशिषियों ने उल्लेख किया है, या पुनरारंभ नीति को अद्यतन करें (इसके लिए 1.11 या नया करने की आवश्यकता है);

देखें के लिए दस्तावेज़docker update और डोकर पुनः आरंभ नीतियों

docker update --restart=no my-container

मौजूदा कंटेनर के लिए पुनरारंभ-नीति को अद्यतन करता है ( my-container)


69
docker update --restart=no $(docker ps -a -q)अपने सभी कंटेनरों को अपडेट करने के लिए उपयोग करें :-)
मार्क मूइब्रोक

33

आप अपने कंटेनर को इसके साथ शुरू कर सकते हैं --restart=unless-stopped


22

सभी ऑटो-रीस्टार्टिंग (डेमॉन) कंटेनरों को निष्क्रिय करने के लिए नीचे का उपयोग करें।

docker update --restart=no $(docker ps -a -q)

SINGLE कंटेनर को पुनरारंभ करने के लिए निम्न का उपयोग करें।

docker update --restart=no the-container-you-want-to-disable-restart

तर्कसंगत :

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

टिप्पणियाँ

यदि आप docker-compose का उपयोग कर रहे हैं तो यह जानना उपयोगी हो सकता है।

पुनरारंभ नहीं, डिफ़ॉल्ट पुनरारंभ नीति है, और यह किसी भी परिस्थिति में कंटेनर को पुनरारंभ नहीं करता है। जब हमेशा निर्दिष्ट किया जाता है, तो कंटेनर हमेशा पुनरारंभ होता है। यदि विफलता से बाहर निकलने का कोड इंगित करता है, तो विफलता-विफलता नीति कंटेनर को पुनरारंभ करती है।

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

12

यदि आपके पास कंटेनरों को पुनः आरंभ करने वाला झुंड है, तो झुंड आपके द्वारा बंद किए गए या rm के किसी भी कंटेनर को पुनरारंभ करेगा, भले ही पुनरारंभ विकल्प के बावजूद। यह एक विशेषता है, बग नहीं है।

सुनिश्चित करें कि आप उस सेवा को नहीं चला रहे हैं जिसके बारे में आप भूल गए हैं:

docker service ls

फिर, आप सेवा को रोक सकते हैं

docker service rm <service id discovered with previous command>

1
lsपरिणाम में त्रुटिError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.