पहले लेख में, "एज़्योर कंटेनर सर्विस पर एक डॉकर झुंड क्लस्टर बनाना," हमने एज़्योर कंटेनर सर्विस (एसीएस) पर एक डॉकर झुंड क्लस्टर बनाने पर चर्चा की। जब झुंड बनाया जाता है तो प्रत्येक वर्चुअल मशीन (मास्टर या एजेंट) में डॉकर चल रहा होता है। इस निरंतरता लेख में, हम Azure कंटेनर सेवा पर बनाए गए झुंड पर डॉकर का उपयोग करने पर चर्चा करेंगे। हम स्टैंडअलोन डॉकर और डॉकर झुंड मोड सेवा दोनों का उपयोग करने पर चर्चा करेंगे। इस लेख में निम्नलिखित भाग हैं:
- पर्यावरण की स्थापना
- डॉकर जानकारी सूचीबद्ध करना
- हैलो वर्ल्ड डॉकर इमेज चलाना
- एक Nginx डॉकर छवि चलाना
- डॉकर कंटेनरों की सूची बनाना
- ब्राउज़र में Nginx Docker कंटेनर एक्सेस करना
- डॉकर कंटेनर हटाना
- डॉकर झुंड मोड प्रारंभ करना
- डॉकर सेवा बनाना
- डॉकर सेवाओं की सूची बनाना
- डॉकर सेवा कार्यों की सूची बनाना
- डॉकर सेवा के लिए डॉकटर कंटेनरों की सूची बनाना
- डॉकर सर्विस कंटेनर द्वारा जेनरेट किए गए लॉग्स को एक्सप्लोर करना
- निष्कर्ष
पर्यावरण की स्थापना
पहले लेख के समान वातावरण का उपयोग करें, "Azure कंटेनर सेवा पर एक डॉकर झुंड क्लस्टर बनाना।" एसीएस पर एक झुंड क्लस्टर बनाएं, जैसा कि लेख में चर्चा की गई है। इस लेख में, हम एक स्टैंडअलोन डॉकर कंटेनर और एक डॉकर झुंड मोड सेवा चलाने के लिए तीन मास्टर नोड्स और एक एजेंट नोड से युक्त झुंड क्लस्टर का उपयोग करेंगे।
डॉकर जानकारी को सूचीबद्ध करना
"Azure कंटेनर सेवा पर एक डॉकर झुंड क्लस्टर बनाना" लेख में चर्चा के अनुसार क्लाउड शेल प्रारंभ करें। SSH RSA निजी कुंजी, उपयोगकर्ता नाम और मास्टर के सार्वजनिक IP पते का उपयोग करके झुंड मास्टर VM से कनेक्ट करें, जैसा कि पहले के लेख में भी चर्चा की गई है। मास्टर VM से कनेक्ट करने के लिए SSH कमांड इस प्रकार है; अलग-अलग उपयोगकर्ताओं के लिए SSH RSA निजी कुंजी, उपयोगकर्ता नाम और सार्वजनिक IP पता अलग-अलग होंगे।
ssh -i /home/deepak/.ssh/id_rsa -p 2200 example@sqldat.com
एक कनेक्शन स्थापित हो जाता है और मास्टर वीएम के लिए एक कमांड प्रॉम्प्ट प्रदर्शित होता है।
example@sqldat.com:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2200 example@sqldat.com Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-65-generic x86_64) में आपका स्वागत है। * दस्तावेज़ीकरण:https://help.ubuntu.com/ मंगल अक्टूबर 10 22:40:17 यूटीसी 2017 तक सिस्टम की जानकारी सिस्टम लोड:0.27 प्रक्रियाएं:131 / का उपयोग:28.80GB का 4.2% उपयोगकर्ता लॉग इन:0 मेमोरी उपयोग :eth0 के लिए 2% IP पता:172.16.0.5 स्वैप उपयोग:docker0 के लिए 0% IP पता:172.17.0.1 इस डेटा को ग्राफ़ करें और इस सिस्टम को यहां प्रबंधित करें:https://landscape.canonical.com/ उबंटू एडवांटेज क्लाउड के साथ क्लाउड समर्थन प्राप्त करें अतिथि:http://www.ubuntu.com/business/services/cloud नई रिलीज '16.04.3 एलटीएस' उपलब्ध है। इसे अपग्रेड करने के लिए 'डू-रिलीज़-अपग्रेड' चलाएं। अंतिम लॉगिन:मंगल अक्टूबर 10 22:40:17 2017 40.78.30.37 से
"Azure कंटेनर सेवा पर एक डॉकर झुंड क्लस्टर बनाना" लेख में प्रावधानित झुंड में तीन मास्टर नोड्स कॉन्फ़िगर किए गए थे। मास्टर वीएम की संख्या 1, 3, या 5 हो सकती है। कई मास्टर वीएम चलाते समय, एसएसएच पोर्ट को छोड़कर प्रत्येक मास्टर वीएम से कनेक्ट करने के लिए एसएसएच कमांड समान है, जो 1 मास्टर के लिए 2200 है, 2201 के लिए 2 मास्टर, 3 मास्टर के लिए 2202, 4 मास्टर के लिए 2203 और 5 मास्टर के लिए 2204। तीन मास्टर VMs के साथ, उपयोग किए गए SSH पोर्ट 2200, 2201 और 2202 हैं। 2 मास्टर से कनेक्ट करने के लिए, SSH कमांड इस प्रकार है:
example@sqldat.com:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2201 example@sqldat.com
और, 2 मास्टर से जुड़ने के लिए SSH कमांड इस प्रकार है:
example@sqldat.com:~$ ssh -i /home/deepak/.ssh/id_rsa -p 2202 example@sqldat.com
डॉकर डेमॉन 172.16.0.5:2375 . पर चल रहा है . सिस्टम-व्यापी जानकारी प्रदर्शित करने के लिए, docker info run चलाएँ आज्ञा। कमांड से आउटपुट (आंशिक) सूचीबद्ध है:
example@sqldat.com:~$ docker -H 172.16.0.5:2375 infoContainers:0 चल रहा है:0 रोका गया:0 रुका हुआ:0 चित्र:0 भूमिका:प्राथमिक रणनीति:स्प्रेड नोड्स:1 झुंड-एजेंट-D50F2361000001:10.0.0.5:2375Is प्रबंधक:झूठा कर्नेल संस्करण:3.19.0-65-जेनेरिकऑपरेटिंग सिस्टम:linuxआर्किटेक्चर:amd64CPUs:2कुल मेमोरी:7.145GiB
हैलो वर्ल्ड डॉकर इमेज चलाना
एसीएस झुंड में प्रत्येक वर्चुअल मशीन एक डॉकर होस्ट है और किसी भी झुंड वीएम पर एक स्टैंडअलोन डॉकर कंटेनर चलाया जा सकता है। उदाहरण के तौर पर, मास्टर वीएम पर "हैलो-वर्ल्ड" डॉकर इमेज चलाएँ।
example@sqldat.com:~$ docker run hello-worldUnable to find the image 'hello-world:latest' स्थानीय रूप से नवीनतम:लाइब्रेरी/hello-world5b0f327be733 से खींचना:पूरा खींचो:sha256:b2ba691d8aac9e5ac3644c0788e3d3823f9e97us 6eb के लिए newer 581 d557f757f डाउनलोड करें World:latestHello from Docker! यह संदेश दिखाता है कि आपका इंस्टॉलेशन ठीक से काम कर रहा है। इस संदेश को उत्पन्न करने के लिए, डॉकर ने निम्नलिखित कदम उठाए:1. डॉकर क्लाइंट ने डॉकर डेमॉन से संपर्क किया। 2. डॉकर डेमॉन ने डॉकर हब से "हैलो-वर्ल्ड" छवि खींची। 3. डॉकर डेमॉन ने उस छवि से एक नया कंटेनर बनाया जो निष्पादन योग्य चलाता है जो उस आउटपुट का उत्पादन करता है जिसे आप वर्तमान में पढ़ रहे हैं। 4. डॉकर डेमॉन ने उस आउटपुट को डॉकर क्लाइंट को स्ट्रीम किया, जिसने इसे आपके टर्मिनल पर भेजा। कुछ और महत्वाकांक्षी प्रयास करने के लिए, आप एक उबंटू कंटेनर चला सकते हैं:$ docker run -it ubuntu bashShare इमेज, स्वचालित वर्कफ़्लो, और बहुत कुछ मुफ्त डॉकर आईडी:https://cloud.docker.com/अधिक उदाहरणों और विचारों के लिए, यहां जाएं:https://docs.docker.com/engine/userguide/example@sqldat.com:~$
डॉकर छवि हैलो-वर्ल्ड झुंड मास्टर वीएम पर चल रहा है न कि झुंड पर। मास्टर वीएम झुंड में सिर्फ वीएम में से एक है। डॉकर झुंड समापन बिंदु 172.16.0.5:2375 को सुन रहा है। झुंड पर डॉकर कंटेनर चलाने के लिए, झुंड समापन बिंदु प्रदान किया जाना चाहिए, जैसा कि हम अगले भाग में चर्चा करेंगे। जब डॉकर कंटेनर को झुंड पर चलाया जाता है, तो झुंड मास्टर डॉकर कंटेनर को चलाने के लिए एक झुंड एजेंट को असाइन करता है।
Nginx Docker Image चलाना
नमस्ते दुनिया पिछले खंड में प्रयुक्त डॉकर छवि एक बहुत ही मूल डॉकर छवि है जिसमें बहुत अधिक डॉकराइजेशन नहीं है और केवल एक संदेश आउटपुट करता है। इस खंड में, हम डॉकर छवि nginx . के साथ एक स्टैंडअलोन कंटेनर चलाएंगे Nginx सर्वर के लिए। निम्न कमांड एक डॉकर कंटेनर बनाता है जिसे hello-nginx . कहा जाता है और होस्ट पर पोर्ट 80 को प्रदर्शित करता है।
docker run --name hello-nginx -d -p 80:80 nginx
डॉकर रन . से आउटपुट आदेश सूचीबद्ध है:
example@sqldat.com:~$ docker run --name hello-nginx -d -p 80:80 nginx स्थानीय रूप से 'nginx:latest' छवि खोजने में असमर्थ:लाइब्रेरी/nginxbc95e04b23c0 से खींचना:पूर्ण 110767c6efff खींचो:पूर्ण खींचोf081e0c4df75:खींचो पूर्ण डाइजेस्ट:sha256:004ac1d5e791e705f12a17c80d7bb1e8f7f01aa7dca7deee 6e65a03465392072 स्थिति:nginx के लिए नई छवि डाउनलोड की गई:नवीनतमb3679edba090ff41482f3754b4d852d295985b501c04c04f6पिछला डॉकर रन कमांड झुंड मास्टर वीएम पर एक डॉकर कंटेनर चलाता है। डॉकर रन स्वार्म एंडपॉइंट आईपी और पोर्ट निम्नानुसार प्रदान करके झुंड पर कमांड चलाया जा सकता है:
example@sqldat.com:~$ docker -H 172.16.0.5:2375 रन --name hello-nginx -d -p 80:80 nginxddcbc335988f7b5dba762b436bfde4c22d01144d67313813ba140a5391bac8dfडॉकर कंटेनरों की सूची बनाना
डॉकर कंटेनरों को मास्टर वीएम पर docker ps . के साथ सूचीबद्ध करें आज्ञा। हैलो-nginx डॉकर कंटेनर सूचीबद्ध हो जाता है। एक झुंड प्रबंधक कंटेनर, जो उपयोगकर्ता नहीं बनाया गया है लेकिन एक सिस्टम कंटेनर है, जब एक झुंड बनाया जाता है तो बनाया जाता है।
संपादक की टिप्पणी: कृपया ध्यान दें कि निम्नलिखित में से कई कोड सूचियाँ सही ढंग से प्रदर्शित होने के लिए बहुत विस्तृत हैं। पूरी सूची देखने के लिए कृपया कोड बॉक्स को दाईं ओर स्क्रॉल करें। |
example@sqldat.com:~$ docker psCONTAINER ID इमेज कमांड क्रिएटेड स्टेटस पोर्ट नामSb3679edba090 nginx "nginx -g 'daemon..." 3 सेकंड पहले 2 सेकंड ऊपर 0.0.0.0:80->80/tcp hello-nginxf82ebb6efa4f swarm:1.1.0 "/swarm manage --r..." 5 मिनट पहले 3 मिनट ऊपर 0.0.0.0:2375->2375/tcp container_swarm_1
झुंड समापन बिंदु पर डॉकर कंटेनरों को निम्नानुसार सूचीबद्ध किया जा सकता है:
example@sqldat.com:~$ docker -H 172.16.0.5:2375 ps -aCONTAINER ID IMAGE COMMAND क्रिएटेड स्टेटस पोर्ट्स NAMESddcbc335988f nginx "nginx -g 'daemon..." 36 सेकंड पहले 35 सेकंड ऊपर 10.0.0.5:80->80/tcp झुंड-एजेंट-D50F2361000001/hello-nginx
डॉकर कंटेनर एक झुंड एजेंट पर चल रहा है जैसा कि डॉकर कंटेनर नाम swarm-agent-D50F2361000001/hello-nginx द्वारा इंगित किया गया है। ।
ब्राउज़र में Nginx Docker कंटेनर एक्सेस करना
जैसा कि पहले चर्चा की गई है, जब झुंड के समापन बिंदु का उपयोग करके झुंड पर एक डॉकटर कंटेनर चलाया जाता है, तो झुंड मास्टर झुंड में एक झुंड एजेंट पर कंटेनर को शेड्यूल करता है। झुंड समापन बिंदु पर डॉकर कंटेनर में चल रहे Nginx सर्वर तक पहुँचने के लिए, झुंड एजेंट सार्वजनिक IP का उपयोग किया जाना चाहिए। हमने जिस झुंड का उपयोग किया है, उसमें केवल एक झुंड एजेंट है। झुंड एजेंट सार्वजनिक आईपी संसाधन सूची से प्राप्त किया जा सकता है, जैसा कि चित्र 1 में दिखाया गया है।
चित्र 1: झुंड एजेंट सार्वजनिक आईपी पता
वैकल्पिक रूप से, संसाधन . में झुंड एजेंट लोड बैलेंसर पर क्लिक करें , जैसा कि चित्र 2 में दिखाया गया है।
चित्र 2: झुंड एजेंट लोड बैलेंसर
झुंड एजेंट विवरण पृष्ठ में आईपी पता प्राप्त करें (चित्र 3 देखें)।
चित्र 3: झुंड एजेंट का आईपी पता
आईपी पता झुंड एजेंट लोड बैलेंसर विवरण पृष्ठ से भी प्राप्त किया जा सकता है, जैसा कि चित्र 4 में दिखाया गया है।
चित्र 4: लोड बैलेंसर पेज पर झुंड एजेंट सार्वजनिक आईपी
स्थानीय मशीन पर ब्राउज़र में, झुंड एजेंट के सार्वजनिक आईपी पते पर नेविगेट करें। Nginx सर्वर स्वागत पृष्ठ प्रदर्शित होता है, जैसा कि चित्र 5 में दिखाया गया है।
चित्र 5: एक ब्राउज़र में Nginx सर्वर को लागू करना
डॉकर कंटेनर हटाना
डॉकर कंटेनर को हटाने के लिए, docker rm . चलाएं आज्ञा। एक चल रहे डॉकर कंटेनर को हटाया नहीं जा सकता। सबसे पहले, डॉकर कंटेनर को रोकें hello-nginx झुंड पर चल रहा है।
example@sqldat.com:~$ docker -H 172.16.0.5:2375 स्टॉप hello-nginxhello-nginx
इसके बाद, रुके हुए कंटेनर को docker rm . के साथ हटाया जा सकता है ।
example@sqldat.com:~$ docker -H 172.16.0.5:2375 rm hello-nginxhello-nginx
डॉकर झुंड मोड प्रारंभ करना
जैसा कि पहले चर्चा की गई है, Azure कंटेनर सेवा झुंड में डिफ़ॉल्ट रूप से झुंड मोड सक्षम नहीं है। झुंड मोड को docker swarm init . के साथ प्रारंभ करना होगा आदेश।
example@sqldat.com:~$ docker swarm init --advertise-addr 52.176.1.213Swarm प्रारंभ:वर्तमान नोड (ia4uj7431stu8y0j5h2yvdp27) अब एक प्रबंधक है।
एक कार्यकर्ता को इस झुंड में जोड़ने के लिए, निम्न आदेश चलाएँ:
docker swarm join --tokenSWMTKN-1-5ksj7uqccgv1vnnmie09qmt191ldpupof4ihg4vhm083c20xsh -6uyq5653uo62e521bcoatzyyz52.176.1.213:2377
इस झुंड में प्रबंधक जोड़ने के लिए, 'docker swarm join-token Manager' चलाएँ और निर्देशों का पालन करें।
झुंड मोड नोड्स को डॉकर नोड ls . के साथ सूचीबद्ध करें आज्ञा। झुंड प्रबंधक नोड सूचीबद्ध हो जाता है।
example@sqldat.com:~$ docker नोड lsID HOSTNAME स्थिति उपलब्धता प्रबंधक STATUSia4uj7431stu8y0j5h2yvdp27 * swarm-master-D50F2361-0 रेडी एक्टिव लीडर
डॉकर सेवा बनाना
डॉकर स्वार्म मोड को इनिशियलाइज़ करने के बाद, डॉकर सर्विस क्रिएट के साथ एक डॉकर सर्विस बनाएं। आज्ञा। एक उदाहरण के रूप में, डॉकर छवि अल्पाइन का उपयोग करके दो प्रतिकृतियों से युक्त एक डॉकर सेवा बनाएं और docker.com पिंग करें।
example@sqldat.com:~$ docker service create--replicas 2 --name helloworld alpine ping docker.comtg1ywqiyei3jw9prco6890ol1
एक अन्य उदाहरण के रूप में, डॉकर छवि tutum/hello-world के साथ एक डॉकर सेवा बनाएं और पोर्ट 8080 पर होस्ट पर सेवा को उजागर करें।
example@sqldat.com:~$ docker service create> --name hello-world> --publish 8080:80> --replicas 2> tutum/hello-world3e38c1595cddg0ckmoyasrnnu
डॉकर सेवाओं की सूची बनाना
डॉकर सेवाओं को docker service ls . के साथ सूचीबद्ध करें आज्ञा। पिछले अनुभाग में बनाई गई दो सेवाएं सूचीबद्ध हो जाती हैं।
example@sqldat.comaster-D50F2361-0:~$ docker service lsID NAME MODE REPLICAS IMAGE PORTS3e38c1595cdd hello-world प्रतिकृति 2/2 tutum/hello-world:latest *:8080->80/tcptg1ywqiyei3j helloworld प्रतिकृति 2/2 अल्पाइन:नवीनतम
डॉकर सेवा कार्यों को सूचीबद्ध करना
helloworld . के लिए डॉकर सेवा कार्यों की सूची बनाएं डॉकर छवि पर आधारित सेवा अल्पाइन ।
example@sqldat.com:~$ docker service ps helloworldID NAME छवि नोड वांछित राज्य वर्तमान स्थिति त्रुटि PORTS0mal82mskbge helloworld.1 alpine:latest swarm-master-D50F2361-0 33 सेकंड पहले चल रहा है। मास्टर-D50F2361-0 32 सेकंड पहले चल रहा है
hello-world . के लिए डॉकर सेवा कार्यों की सूची बनाएं tutum/hello-world . पर आधारित सेवा डॉकर छवि।
example@sqldat.com:~$ docker service ps hello-worldID नाम छवि नोड वांछित राज्य वर्तमान स्थिति त्रुटि PORTSyok48ja4o835 hello-world.1 tutum/hello-world:latest swarm-master-D50F2361-0 38 सेकंड चल रहा है hello-world.2 tutum/hello-world:latest swarm-master-D50F2361-0 38 सेकंड पहले चल रहा है
डॉकर सेवा के लिए डॉकटर कंटेनरों की सूची बनाना
झुंड में डॉकर होस्ट पर डॉकर सेवा के लिए डॉकर कंटेनरों को docker ps के साथ सूचीबद्ध किया जा सकता है। आदेश।
example@sqldat.com:~$ docker psCONTAINER ID इमेज कमांड क्रिएटेड स्टेटस पोर्ट्स NAMESb6b069102300 tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 मिनट पहले 6 मिनट 80/ tcp hello-world.2.x5tvcuglwzd05olktbf3tpfqe62e26d4bc0ff tutum/hello-world:latest "/bin/sh -c 'php-f..." 6 मिनट पहले 6 मिनट तक 80/tcp hello-world.3501.yok48late4o835nc7cog827hjl pingdocker.com" 7 मिनट पहले 7 मिनट ऊपरहैलो-वर्ल्ड . के लिए डॉकर कंटेनर और helloworld सेवाएं सूचीबद्ध हो जाती हैं।
डॉकर सर्विस कंटेनर द्वारा जेनरेट किए गए लॉग्स को एक्सप्लोर करना
डॉकर सेवा के लिए डॉकर कंटेनर में उत्पन्न लॉग, यदि कोई हो, को डॉकर लॉग के साथ सूचीबद्ध किया जा सकता है आज्ञा। उदाहरण के तौर पर, अल्पाइन छवि आधारित सेवा के लिए कंटेनर आईडी प्राप्त करें और लॉग सूचीबद्ध करें:
example@sqldat.com:~$ docker logs db4827da350bPING docker.com (34.201.187.190):56 डेटा बाइट्सजैसा कि आउटपुट इंगित करता है, docker.com डोमेन पिंग हो जाता है और 56 बाइट्स डेटा का आदान-प्रदान किया जाता है।
निष्कर्ष
इस लेख में, हमने Azure कंटेनर सेवा पर Docker झुंड क्लस्टर में Docker का उपयोग करने पर चर्चा की। हमने झुंड पर स्टैंडअलोन डॉकर कंटेनर और डॉकर सेवाओं का इस्तेमाल किया। एसीएस पर एक झुंड क्लस्टर एक स्टैंडअलोन डॉकर कंटेनर चलाने के लिए एक झुंड समापन बिंदु को उजागर करता है। जब डॉकर कंटेनर झुंड के समापन बिंदु पर चलाए जाते हैं, तो झुंड झुंड एजेंट/एस पर स्टैंडअलोन डॉकर कंटेनर चलाता है। स्वार्म मोड डिफ़ॉल्ट रूप से सक्षम नहीं होता है और इसे स्वार्म मास्टर VM पर इनिशियलाइज़ किया जाना चाहिए।