मैं सिस्टम बूट पर डॉकर कंटेनर को ऑटो-स्टार्ट कैसे करूं?

सिस्टम बूट होने पर डॉकर कंटेनर को स्वचालित रूप से शुरू करने का एक अच्छा तरीका क्या है?

क्या उबंटू 14.04 पर ऐसा करने का कोई पसंदीदा तरीका है?

मैंने इस्तेमाल किया है supervisord अतीत में ऑटो स्टार्ट वेब ऐप्स के लिए । लेकिन यह डॉकर के लिए सही बात नहीं लगती ।

जाहिर है, डॉकर कंटेनरों को ऑटो-स्टार्ट करने की वर्तमान विधि (डॉकर 1.2 से) का उपयोग करना है नीतियों को पुनरारंभ करें. यह नियंत्रित करेगा कि स्टार्टअप पर कंटेनर को शुरू करने और बाहर निकलने पर कंटेनर को फिर से शुरू करने के लिए डॉकर को कैसे संभालना चाहिए । मैंने अब तक 'हमेशा' विकल्प का उपयोग किया है, और यह पुष्टि कर सकता है कि यह डॉकर को सिस्टम बूट पर कंटेनर को ऑटो-स्टार्ट करता है:

sudo docker run --restart=always -d myimage

प्रलेखन अंश

डॉकर रन पर --पुनरारंभ ध्वज का उपयोग करके नीतियों को पुनरारंभ करें आप एक पुनरारंभ नीति निर्दिष्ट कर सकते हैं कि कंटेनर को बाहर निकलने पर कैसे पुनरारंभ किया जाना चाहिए या नहीं ।

नहीं - बाहर निकलने पर कंटेनर को पुनरारंभ न करें ।

ऑन-फेल्योर-कंटेनर को केवल तभी पुनरारंभ करें जब वह गैर शून्य निकास स्थिति से बाहर निकलता है ।

हमेशा-हमेशा बाहर निकलने की स्थिति की परवाह किए बिना कंटेनर को पुनरारंभ करें ।

आप यह भी निर्दिष्ट कर सकते हैं कि ऑन-विफलता नीति का उपयोग करते समय डॉकर कंटेनर को पुनरारंभ करने का प्रयास करेगा । डिफ़ॉल्ट यह है कि डॉकर कंटेनर को पुनरारंभ करने के लिए हमेशा के लिए प्रयास करेगा ।

$ sudo docker run --restart=always redis

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

$ sudo docker run --restart=on-failure:10 redis

यह रेडिस कंटेनर को ऑन-फेल्योर की रीस्टार्ट पॉलिसी और 10 की अधिकतम रीस्टार्ट काउंट के साथ चलाएगा । यदि रेडिस कंटेनर एक पंक्ति में 10 बार से अधिक गैर-शून्य निकास स्थिति के साथ बाहर निकलता है तो डॉकर कंटेनर को पुनरारंभ करने का प्रयास बंद कर देगा । अधिकतम पुनरारंभ सीमा प्रदान करना केवल ऑन-विफलता नीति के लिए मान्य है ।

डॉकर है यह पृष्ठ यह बताता है कि इसे अपस्टार्ट और सिस्टमड के साथ कैसे किया जाए । मैं मानता हूं कि यह डॉकर के लिए सही बात नहीं लगती । उनका समाधान चलाना है docker start, जो मानता है कि आपने पहले ही अपना कंटेनर बना लिया है । मुझे लगता है कि आप या तो करना चाहते हैं docker run --rm अपस्टार्ट स्क्रिप्ट में (इसे एक नई प्रक्रिया और एक छवि से कंटेनर की तरह व्यवहार करना) या बस डॉकर डेमॉन को बूट पर कंटेनरों को फिर से शुरू करने दें (जैसा कि यह डिफ़ॉल्ट रूप से होगा यदि आप और कुछ नहीं करते हैं) । अपस्टार्ट को प्रक्रियाओं की आसान शुरुआत/रोक की अनुमति देने का लाभ है, लेकिन आप इसे डॉकर के स्टार्ट/स्टॉप के साथ भी प्राप्त करते हैं!

मुझे लगता है कि अपस्टार्ट स्क्रिप्ट काम करने से पहले उपयोगकर्ता को मैन्युअल रूप से एक कंटेनर (सभी सही पोर्ट/वॉल्यूम बाइंडिंग के साथ) बनाने के लिए मजबूर करना अजीब है ।

लेकिन यह डॉकर के लिए सही बात नहीं लगती ।

क्यों नहीं?

मैं इसके लिए सुपरवाइजर का उपयोग बड़ी सफलता के साथ करता हूं ।

आप जो जानते हैं उसका उपयोग करें, जो काम करता है उसका उपयोग करें, कुछ ऐसा उपयोग करें जिसे आप आसानी से बनाए रख सकें और समझ सकें ।