डेवलपर टूल · Docker रन टू Docker Compose कन्वर्टर
कुंजी लिखने के लिए Docker फ़्लैग मैप कैसे चलाता है: -p, -v, -e, --name और अधिक
· यह काम किस प्रकार करता है
डाक में काम करनेवाला मज़दूर लिखें डेवलपर-वर्कफ़्लो
अधिकांश Docker रन फ़्लैग में एक-से-एक Compose समतुल्य होता है, और कुछ में कोई नहीं होता है। यह पोस्ट मैपिंग के माध्यम से चलती है ताकि परिवर्तित सेवा परिभाषा अपेक्षित रूप से पढ़ी जा सके।
एक Docker रन जो README में तीन पंक्तियों को लपेटता है - यह काम करता है, कोई भी इसकी समीक्षा नहीं कर सकता है, और टीम compose.yaml चाहती है
एक मल्टी-लाइन Docker रन अपने परिचालन अनुबंध को शेल उपनाम या README में छिपाते हुए आज एक सेवा शुरू कर सकता है। एक Compose फ़ाइल समान विकल्पों को समीक्षा योग्य सेवा परिभाषा में ले जाती है, लेकिन सुरक्षा सेटिंग्स को चुपचाप छोड़ने के बजाय रूपांतरण को प्रत्येक ध्वज के लिए जिम्मेदार होना चाहिए। ToolAcre कमांड को टेक्स्ट के रूप में पार्स करता है: यह कभी भी छवि नहीं चलाता है, Docker सॉकेट नहीं खोलता है या कंटेनर तैनात नहीं करता है। आउटपुट को एक ड्राफ्ट कॉन्फ़िगरेशन के रूप में मानें जिसके लिए होस्ट पथ, क्रेडेंशियल्स और नेटवर्क मान्यताओं की जांच करने के लिए अभी भी एक ऑपरेटर की आवश्यकता है।
सेवा का आकार - छवि, फिर कुंजियों का एक सेट जो झंडे को प्रतिबिंबित करता है, सेवाओं के अंतर्गत: और एक सेवा का नाम
लिखें YAML सेवाओं के अंतर्गत प्रारंभ होता है:, उसके बाद सेवा का नाम और छवि:। एक कमांड लाइन के विपरीत, इसकी कुंजियाँ पोर्ट और पर्यावरण प्रविष्टियों जैसे दोहराए गए मानों को अनुक्रमों में समूहित करती हैं। ToolAcre --name या छवि से एक सेवा नाम प्राप्त करता है और YAML को क्रमबद्ध करने से पहले एक मॉडल बनाता है। वर्तमान Compose फ़ाइलों को शीर्ष-स्तरीय संस्करण की आवश्यकता नहीं है: कुंजी; एक को इसलिए जोड़ा जा रहा है क्योंकि एक पुराने ब्लॉग पोस्ट से पता चला है कि यह संगतता में सुधार के बजाय एक अप्रचलित चेतावनी पैदा करेगा।
सामान्य झंडे - बंदरगाहों के लिए -p, वॉल्यूम के लिए -v, पर्यावरण के लिए -e, कंटेनर_नाम के लिए --name, पुनरारंभ करने के लिए --restart, नेटवर्क के लिए --network
सामान्य मैपिंग फ़ाइल को पहचानने योग्य बनाती है: -p 8080:80 पोर्ट बन जाता है: उद्धृत मैपिंग के साथ, -v होस्ट: कंटेनर एक वॉल्यूम प्रविष्टि बन जाता है, -e KEY=मान पर्यावरण में चला जाता है, --name बन जाता है कंटेनर_नाम, --restart पुनरारंभ हो जाता है और --network को नेटवर्क संदर्भ की आवश्यकता होती है। पोर्ट मैपिंग को उद्धृत करना मायने रखता है क्योंकि YAML को इसे एक स्ट्रिंग के रूप में मानना चाहिए, विराम चिह्न की किसी अन्य प्रकार के रूप में व्याख्या नहीं करनी चाहिए। किसी नामित वॉल्यूम को अपनी स्वयं की शीर्ष-स्तरीय वॉल्यूम घोषणा की आवश्यकता हो सकती है; होस्ट बाइंड माउंट की जाँच उस मशीन से की जानी चाहिए जहाँ Compose चलेगा।
कम आम झंडे - --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host और उनकी कुंजियाँ
--hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label और --add-host जैसे झंडों में संगत सेवा अवधारणाएं हैं, लेकिन उनके शब्दार्थ रनटाइम पर निर्भर हो सकते हैं और मेज़बान. एक असमर्थित --security-opt को एक विश्वसनीय दिखने वाली कुंजी के रूप में आविष्कार नहीं किया जाना चाहिए या अदृश्य रूप से त्याग नहीं दिया जाना चाहिए। ToolAcre असमर्थित विकल्पों का नामकरण करने वाली चेतावनियों को सूचीबद्ध करता है ताकि एक समीक्षक मैन्युअल रूप से मैपिंग समाप्त कर सके या यह निर्णय ले सके कि Compose सही प्रतिस्थापन नहीं है। YAML कुंजी की उपस्थिति यह साबित नहीं करती है कि सेवा समान विशेषाधिकारों के साथ शुरू होती है।
स्थितीय तर्क - छवि छवि बन जाती है:, और कमांड बनने के बाद कुछ भी:
छवि का नाम रन और उसके विकल्पों के बाद एक स्थितिगत तर्क है। छवि के बाद तर्क सेवा कमांड बन जाते हैं, न कि अधिक Docker रन फ़्लैग; उस सीमा के पार एक टोकन ले जाने से यह बदल जाता है कि कौन सा प्रोग्राम इसे प्राप्त करता है। एक README उदाहरण को टोकन में विभाजित करते समय शेल उद्धरण और बैकस्लैश भी मायने रखते हैं। ToolAcre का पार्सर एक शेल दुभाषिया नहीं है, इसलिए $HOME जैसे वेरिएबल की संदर्भ में समीक्षा की जानी चाहिए न कि यह मानने के बजाय कि यह मूल इंटरैक्टिव शेल में विस्तारित होता है।
कार्यान्वित उदाहरण: पोस्टग्रेज Docker रन को परिवर्तित करना - पूर्ण कमांड, परिणामी सेवा परिभाषा, और लाइन-दर-लाइन तुलना
उदाहरणात्मक कमांड Docker रन -d --name डेमो-डीबी -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e पर विचार करें। POSTGRES_PASSWORD=केवल-डेमो --restart जब तक रोका न जाए पोस्टग्रेज:16। ToolAcre छवि पोस्टग्रेज़ के साथ services.demo-db उत्सर्जित करता है:16, कंटेनर_नाम डेमो-डीबी, एक उद्धृत 5432:5432 पोर्ट, एक pgdata वॉल्यूम, एक पर्यावरण सूची प्रविष्टि, पुनरारंभ: जब तक रोका नहीं गया, और एक शीर्ष-स्तरीय pgdata वॉल्यूम घोषणा। यह चेतावनी देता है कि -d एक कमांड-लाइन विकल्प है; docker compose up -d इसे संभालता है। "डेमो-ओनली" एक जानबूझकर असुरक्षित शिक्षण प्लेसहोल्डर है - इस उत्पन्न YAML में कभी भी वास्तविक डेटाबेस पासवर्ड न डालें।
इसमें क्या शामिल नहीं है - बिना सेवा समतुल्य झंडे (-d, --rm) और चीजें जो बिल्कुल भी कमांड में नहीं हैं, जैसे संदर्भ बनाना
प्रत्येक रन फ़्लैग में टिकाऊ सेवा-संपत्ति समकक्ष नहीं होता है। -d को आपके द्वारा लागू किए गए Compose कमांड द्वारा नियंत्रित किया जाता है; --rm लंबे समय तक चलने वाली सेवा के बजाय एकबारगी Compose रन से संबंधित है। मूल कमांड से अनुपस्थित बिल्ड संदर्भ, गुप्त स्टोर, स्वास्थ्य रणनीति या बहु-सेवा निर्भरता का अनुमान नहीं लगाया जा सकता है। टूल अपने आउटपुट को पूर्ण परिनियोजन योजना का दिखावा करने के बजाय असमर्थित फ़्लैग की रिपोर्ट करता है। विशेषाधिकार प्राप्त या नेटवर्क-संवेदनशील कंटेनर को तैनात करने से पहले Docker Compose सेवा संदर्भ पढ़ें।
टेकअवे: Compose एक ही कॉन्फ़िगरेशन है, संरचित - और कन्वर्टर आपके द्वारा पेस्ट किए गए कमांड से सेवा परिभाषा उत्पन्न करता है
Compose वही कॉन्फ़िगरेशन है, जो समीक्षा और दोहराव के लिए संरचित है। Docker रन टू Docker Compose कन्वर्टर आपको आपके ब्राउज़र में एक उम्मीदवार सेवा परिभाषा देता है और चिपकाए गए कमांड को स्थानीय रखता है; यह Docker निष्पादित नहीं करता है। प्रत्येक स्रोत ध्वज की तुलना उसकी YAML कुंजी, पता चेतावनियों से करें और परिणाम को वास्तविक होस्ट पर लागू करने से पहले सादे पर्यावरण ब्लॉक से रहस्य हटा दें।