2016-09-12 13 views
6

मेरे पास एक साधारण Django एप्लिकेशन (पांच कंटेनर, तीन छवियां) का वर्णन करने वाली कुछ रचना फाइलें (डॉकर-कंपोज़.इम) हैं।उत्पादन में डॉकर लिखें स्टैक चलाने के लिए अनुशंसित तरीका?

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

मुझे इस तरह से उत्पादन में विशेष रूप से डॉकर-रचना का उपयोग करने पर अधिक जानकारी नहीं मिली है। The documentation सहायक है लेकिन बूट पर शुरू करने के बारे में कुछ भी नहीं बताता है, और मैं अमेज़ॅन लिनक्स का उपयोग कर रहा हूं इसलिए (वर्तमान में) डॉकर मशीन तक पहुंच नहीं है। मैं पर्यवेक्षक का उपयोग बेबीसिट प्रक्रियाओं में करने के लिए किया जाता है और यह सुनिश्चित करता है कि वे बूट अप शुरू करें, लेकिन मुझे नहीं लगता कि यह डॉकर कंटेनर के साथ ऐसा करने का तरीका है, क्योंकि आखिरकार डॉकर डिमन द्वारा पर्यवेक्षित किया जा रहा है?

एक साधारण शुरुआत के रूप में मैं बस अपनी सभी सेवाओं पर restart: always डाल रहा हूं और बूट पर docker-compose up -d करने के लिए एक init स्क्रिप्ट बना रहा हूं। क्या उत्पादन में डॉकर-कंपोज़ स्टैक को मजबूत तरीके से प्रबंधित करने का एक अनुशंसित तरीका है?

संपादित करें: मैं अपने कंटेनर स्टैक के लिए एक मजबूत तरीके से docker-compose up के बराबर चलाने के लिए 'सरल' तरीका ढूंढ रहा हूं। मुझे पता है कि ढेर में घोषित सभी कंटेनर एक ही मशीन पर रह सकते हैं; इस मामले में मुझे कई उदाहरणों में एक ही स्टैक से कंटेनरों को ऑर्केस्ट्रेट करने की आवश्यकता नहीं है, लेकिन यह भी जानना सहायक होगा।

+0

के मामले में पुनः आरंभ तो तुम नहीं है जरूरी एक पूर्ण विकसित वाद्यवृन्दकार चाहते, बल्कि यह है कि यह सुनिश्चित करता है ही सर्वर बात किसी प्रकार का 'डोकर अप 'की रचना ऊपर रहता है? डॉकर रचना या कुछ के लिए monit की तरह? – Timo

+0

@TimoLehto मैंने कभी पहले monit का सामना नहीं किया है, लेकिन एक नज़र से मैं कहूंगा कि 'डॉकर कंपोज़ के लिए मोनिट' जो कुछ मैं ढूंढ रहा हूं उसके करीब काफी होगा - सबकुछ ऊपर उठाएं और बूट पर चलें, और कंटेनरों को पुनरारंभ करें (कारण के भीतर) अगर वे –

उत्तर

7

लिखें एक क्लाइंट टूल है, लेकिन जब आप docker-compose up -d चलाते हैं तो सभी कंटेनर विकल्प इंजन को भेजे जाते हैं और संग्रहीत किए जाते हैं। यदि आप restartalways (या अधिमानतः unless-stoppedto give you more flexibility) निर्दिष्ट करते हैं तो आपको अपने होस्ट बूट होने पर हर बार docker-compose up चलाने की आवश्यकता नहीं है।

जब मेजबान शुरू होता है, बशर्ते आपके पास बूट पर शुरू करने के लिए configured the Docker daemon है, तो डॉकर उन सभी कंटेनर को शुरू करेगा जिन्हें पुनरारंभ करने के लिए फ़्लैग किया गया है। इसलिए आपको docker-compose up -dको पर चलाने की आवश्यकता है और डॉकर बाकी की देखभाल करता है।

एक स्वार में एकाधिक नोड्स में कंटेनरों को ऑर्केस्ट्रेट करने के लिए - पसंदीदा दृष्टिकोण Distributed Application Bundles का उपयोग करना होगा, लेकिन वर्तमान में यह (डॉकर 1.12 के रूप में) प्रयोगात्मक है। आप मूल रूप से स्थानीय कंपोज़ फ़ाइल से एक बंडल बनायेंगे जो आपके वितरित सिस्टम का प्रतिनिधित्व करता है, और उसके बाद उसे दूरस्थ रूप से एक स्वार में तैनात करता है। डॉकर तेजी से चलता है, इसलिए मैं उम्मीद करता हूं कि कार्यक्षमता जल्द ही उपलब्ध होगी।

+0

यह सबसे आसान समाधान है - मुझे एहसास नहीं हुआ कि 'पुनरारंभ करें: हमेशा' डॉकर डिमन को फिर से चालू करता है! –

1

आप अपने documentation में उत्पादन में डॉकर-रचना का उपयोग करने के बारे में अधिक जानकारी प्राप्त कर सकते हैं। लेकिन, जैसा कि वे उल्लेख करते हैं, compose मुख्य रूप से विकास और परीक्षण वातावरण के उद्देश्य से है।

यदि आप उत्पादन में अपने कंटेनर का उपयोग करना चाहते हैं, तो मैं आपको Kubernetes के रूप में कंटेनरों को ऑर्केस्ट्रेट करने के लिए एक उपयुक्त टूल का उपयोग करने का सुझाव दूंगा।

+0

विफल हो जाते हैं तो आपके द्वारा लिंक किए गए दस्तावेज़ पुराने हैं। कुबेरनेट दिलचस्प लग रहा है लेकिन सीखने की अवस्था खड़ी दिखती है और जो मैंने पढ़ा है उससे डॉकर-रचना के साथ मूल रूप से काम नहीं करता है। –

+0

मैंने हालिया दस्तावेज के साथ अपना उत्तर अपडेट किया है। – JesusTinoco

1

आप एक swarmkitservice (डोकर 1.11+) के रूप में अपने Django आवेदन का आयोजन कर सकते हैं, तो आप कार्य के साथ अपने आवेदन के निष्पादन रच सकते हैं।

Swarmkit has a restart policy (swarmctl flags देख)

पुनः प्रारंभ नीतियाँ: आर्केस्ट्रा परत कार्यों पर नज़र रखता है और निर्दिष्ट नीति के आधार पर विफलताओं के प्रति प्रतिक्रिया करता।
ऑपरेटर परिस्थितियों, देरी और सीमाओं को पुन: प्रारंभ कर सकता है (किसी दिए गए समय विंडो में अधिकतम प्रयासों की संख्या)। SwarmKit एक अलग मशीन पर एक कार्य को पुनरारंभ करने का फैसला कर सकते हैं। इसका मतलब है कि दोषपूर्ण नोड धीरे-धीरे अपने कार्यों से निकल जाएंगे।

भले ही आपके "क्लस्टर" में केवल एक नोड है, ऑर्केस्ट्रेशन परत सुनिश्चित करेगी कि आपके कंटेनर हमेशा ऊपर और चल रहे हैं।

1

आप कहते हैं कि आप एडब्ल्यूएस का उपयोग करते हैं तो आप ECS का उपयोग क्यों नहीं करते हैं जो आप पूछते हैं। आप एक एप्लिकेशन बनाते हैं जो आपके 5 कंटेनरों का पैक है। आप कॉन्फ़िगर करेंगे कि आपके क्लस्टर में आप कितने और कितने ईसी 2 चाहते हैं।

आपको बस अपने डॉकर-compose.yml को विशिष्ट Dockerrun.aws.json में परिवर्तित करना है जो कठिन नहीं है।

एडब्ल्यूएस अपने कंटेनर शुरू कर देंगे जब आप को तैनात है और यह भी उन्हें दुर्घटना

+0

ईसीएस अच्छा होगा लेकिन इस उदाहरण में मैं एडब्ल्यूएस आधारभूत संरचना के नियंत्रण में नहीं हूं और प्रदान किए गए ईसी 2 उदाहरणों का उपयोग करना है –

संबंधित मुद्दे