Docker swarm स्टैक में एक सेवा को पुनरारंभ करें


80

क्या किसी को पता है कि क्या कोई तरीका है कि docker swarm में एक सेवा को फिर से शुरू करना है जो पूरे स्टैक को फिर से शुरू किए बिना स्टैक का हिस्सा है?

जवाबों:


109

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झंडा उसे पुन: प्रारंभ करने के लिए पैदा कर रहा अद्यतन करने के लिए सेवा के लिए बाध्य करेगा।


69

0 और बैक अप के लिए स्केल:

docker service scale myservice=0
docker service scale myservice=10

2
यह केवल एक ही है जो वास्तव में एक पुनरारंभ को मजबूर करता है। धन्यवाद!
the_ccalderon

1
सहमत हूँ, सिर्फ एक अपडेट के लिए मजबूर करना मेरे लिए सेवा को फिर से शुरू नहीं करता है, पता नहीं क्यों
ईगोर

हालाँकि यह तरीका सेवा को रोकने के लिए लगता है, लेकिन किसी तरह यह सेवा जानवर के आंतों में गहराई तक छिपी रहती है। उदाहरण के लिए, जब मैं सेवा को स्केल करता हूं तो मुझे 'पोर्ट पहले से ही उपयोग में आता है' और उसी पोर्ट का उपयोग करने वाले दूसरे को स्पिन करने का प्रयास करें।
नेटलैंडर

14

docker stackप्रलेखन को देखते हुए :

विस्तारित विवरण

बनाएँ और झुंड पर एक थपका या थपका फ़ाइल से एक अद्यतन

से इस ब्लॉग लेख : docker stackके रूप में एक समान तरीके से काम करता है docker compose। यह बेकार है । यदि स्टैक पहले से ही तैनात है, docker stack deployतो केवल उन्हीं सेवाओं को फिर से चालू करेगा , जिनमें अपडेट किया गया डाइजेस्ट या टैग है:

docker स्टैक प्रोसेस

अपने अनुभव से, जब मैं एक ही सेवा को बदलने के साथ एक ही स्टैक को फिर से लागू करता हूं, तो केवल अपडेट की गई सेवा को फिर से शुरू किया जाएगा

लेकिन ... परिवर्तन की कुछ सीमाएँ लगती हैं, जिन्हें ध्यान में रखा जाता है (कुछ रिपोर्ट टैग के साथ बग ), इसलिए इसे आज़माएँ और देखें कि क्या अपेक्षित है।

आप यह भी उपयोग कर सकते हैं service updateयदि आप सुनिश्चित करना चाहते हैं कि आपके परिवर्तनों से अपडेट होने पर ही लक्षित सेवा हो।

आप इसी तरह के एसओ क्यूए का भी उल्लेख कर सकते हैं


धन्यवाद, यह उम्मीद के मुताबिक काम करता है। मैं वास्तव में रोलिंग तरीके से एक विशिष्ट सेवा (या पूरे स्टैक) को पुनरारंभ करने के लिए बाध्य कर रहा हूं। दुर्भाग्य से कुछ सेवाएं जो मैं कैश अमान्यता के साथ जारी करता हूं और हमें लगता है कि अपडेट को लागू करने के लिए हमें स्टैक को हटाने / फिर से तैनात करने की आवश्यकता है। को देखते हुए service updateमैं निकालें / जोड़ सकते हैं प्रलेखन envअगर वहाँ कोई रास्ता नहीं में बनाया गया है यह नकली बाहर करने के लिए चर।
tweeks200

बस एक ही चीज़ की तलाश थी - डॉक्स में कोई भी नहीं मिला।
मॉर्गन कोबेसी 8

मैंने सिर्फ निम्नलिखित मुद्दे का सामना किया: docker stack deployएक सेवा (ओपनडैप) शुरू नहीं करेगा। मुझे लॉग फाइल नहीं मिली। docker-compose run <service>समस्या के बिना कंटेनर शुरू होगा। अंत में, docker service update --force <servce>काम किया।
रोरबी

0

रोलिंग अपडेट के लिए प्रलेखन में उदाहरण के अनुसार :

$ docker सेवा अद्यतन --image redis: 3.0.7 redis

हालाँकि, यह तभी काम करता है जब आपकी छवि पहले से ही स्थानीय मशीनों पर हो। यदि नहीं, तो आपको swarm एजेंटों को रजिस्ट्री प्रमाणीकरण विवरण भेजने के लिए - रजिस्ट्री-प्रमाणीकरण का उपयोग करने की आवश्यकता है। डॉकटर सेवा अद्यतन प्रलेखन में विवरण देखें

$ docker सेवा अद्यतन - इसके साथ ही रजिस्ट्री-स्थिती --image redis: 3.0.7 redis


-1

इसे हटा दो:

docker stack rm stack_name

इसे फिर से तैयार करें:

docker stack deploy -c docker-compose.yml stack_name

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