क्या किसी को पता है कि क्या कोई तरीका है कि docker swarm में एक सेवा को फिर से शुरू करना है जो पूरे स्टैक को फिर से शुरू किए बिना स्टैक का हिस्सा है?
जवाबों:
docker stack deploy
मेरे लिए फिर से करना अपडेट सेवाओं पर जाने का तरीका है। के रूप में फ्रेंकोइस 'उत्तर , और यह भी मेरे अपने अनुभव में है, इसलिए केवल सेवाओं है कि जरूरत से अद्यतन किया जा करने के लिए अद्यतन कर रहा।
लेकिन कभी-कभी, यह आसान लगता है जब सामान का परीक्षण केवल एक सेवा को पुनरारंभ करने के लिए। मेरे मामले में, मुझे वॉल्यूम साफ़ करना था और इसे नए सिरे से शुरू करने के लिए सेवा को अपडेट करना था। मुझे यकीन नहीं है कि अगर मैं जिस विधि का वर्णन करूंगा, उससे उल्टा है। मैंने इसे अपने विकास स्टैक पर परीक्षण किया और इसने मेरे लिए बहुत अच्छा काम किया।
उस सेवा आईडी को प्राप्त करें, जिसे आप फाड़ना चाहते हैं, फिर docker service update --force <id>
सेवा के अद्यतन को प्रभावी ढंग से लागू करने के लिए इसका उपयोग करें
$ docker stack services <stack_name>
ID NAME ...
3xrdy2c7pfm3 stack-name_api ...
$ docker service update --force 3xrdy2c7pfm3
--force
झंडा उसे पुन: प्रारंभ करने के लिए पैदा कर रहा अद्यतन करने के लिए सेवा के लिए बाध्य करेगा।
0 और बैक अप के लिए स्केल:
docker service scale myservice=0
docker service scale myservice=10
docker stack
प्रलेखन को देखते हुए :
विस्तारित विवरण
बनाएँ और झुंड पर एक थपका या थपका फ़ाइल से एक अद्यतन
से इस ब्लॉग लेख : docker stack
के रूप में एक समान तरीके से काम करता है docker compose
। यह बेकार है । यदि स्टैक पहले से ही तैनात है, docker stack deploy
तो केवल उन्हीं सेवाओं को फिर से चालू करेगा , जिनमें अपडेट किया गया डाइजेस्ट या टैग है:
अपने अनुभव से, जब मैं एक ही सेवा को बदलने के साथ एक ही स्टैक को फिर से लागू करता हूं, तो केवल अपडेट की गई सेवा को फिर से शुरू किया जाएगा ।
लेकिन ... परिवर्तन की कुछ सीमाएँ लगती हैं, जिन्हें ध्यान में रखा जाता है (कुछ रिपोर्ट टैग के साथ बग ), इसलिए इसे आज़माएँ और देखें कि क्या अपेक्षित है।
आप यह भी उपयोग कर सकते हैं service update
यदि आप सुनिश्चित करना चाहते हैं कि आपके परिवर्तनों से अपडेट होने पर ही लक्षित सेवा हो।
service update
मैं निकालें / जोड़ सकते हैं प्रलेखन env
अगर वहाँ कोई रास्ता नहीं में बनाया गया है यह नकली बाहर करने के लिए चर।
docker stack deploy
एक सेवा (ओपनडैप) शुरू नहीं करेगा। मुझे लॉग फाइल नहीं मिली। docker-compose run <service>
समस्या के बिना कंटेनर शुरू होगा। अंत में, docker service update --force <servce>
काम किया।
रोलिंग अपडेट के लिए प्रलेखन में उदाहरण के अनुसार :
$ docker सेवा अद्यतन --image redis: 3.0.7 redis
हालाँकि, यह तभी काम करता है जब आपकी छवि पहले से ही स्थानीय मशीनों पर हो। यदि नहीं, तो आपको swarm एजेंटों को रजिस्ट्री प्रमाणीकरण विवरण भेजने के लिए - रजिस्ट्री-प्रमाणीकरण का उपयोग करने की आवश्यकता है। डॉकटर सेवा अद्यतन प्रलेखन में विवरण देखें ।
$ docker सेवा अद्यतन - इसके साथ ही रजिस्ट्री-स्थिती --image redis: 3.0.7 redis
इसे हटा दो:
docker stack rm stack_name
इसे फिर से तैयार करें:
docker stack deploy -c docker-compose.yml stack_name