देसी  भाषा में एक्सट्रीम बिगिनर्स के लिए डॉकर :) Layman Docker ( translate in ur language too)
Tags: docker, beginners, linux, tutorial
Published: 2021-06-03 08:11:15


######*** छोटा सा अनुरोध अनुरोध:***
###### मेरी टीम [शामिल होने के लिए फॉर्म] (https://forms.gle/pSCALuEWHus3pg9F6) में शामिल होने के लिए आपका स्वागत है।
###### *इसके अलावा ओपन सोर्स इंटेलिजेंट सिस्टम (OSINT) में शामिल होने के लिए आपका स्वागत है यदि आप कोरोना प्रकोप जैसी विभिन्न बीमारियों से मनुष्यों की रक्षा के संबंध में ओपन सोर्स प्रोजेक्ट में मदद कर सकते हैं*
######https://github.com/Manishfoodtechs/OSINTHRH/wiki

मैंने सर्वर, क्लाउड और कंटेनरों पर शुरुआती लोगों के लिए सरल भाषा में विभिन्न लेख लिखे हैं। आप मेरी प्रोफाइल पर जाकर उन्हें ढूंढ सकते हैं। ऐसा ही एक लेख यहां फिर से अलग शीर्षक के साथ है।

#**स्तर शून्य**: ***डेस्कटॉप और सर्वर के बीच अंतर***
#####डेस्कटॉप क्या है? एक डेस्कटॉप में सीपीयू, रैम, हार्ड ड्राइव आदि और ऑपरेटिंग सिस्टम होता है। यह ऑपरेटिंग सिस्टम विंडोज, लिनक्स, मैक आदि हो सकता है। आपके पास डेस्कटॉप में ग्राफिकल इंटरफेस (जीयूआई) है लेकिन अगर आप जीयूआई हटाते हैं तो यह सर्वर बन जाता है। हम इसे "धातु सर्वर" (Bare Metal server) कहते हैं।

#**स्तर एक**: ***एक सर्वर के अंदर कई सर्वर प्राप्त करना***

![वर्चुअलाइजेशन](https://www.open.edu/openlearn/ocw/pluginfile.php/1399956/mod_oucontent/oucontent/72266/55f4befe/0c0a3587/2-2-13.small.jpg)

##### मेटल सर्वर सबसे महंगे हैं। इसलिए, लोगों ने उन्हें साझा किया और उन्हें वर्चुअल प्राइवेट सर्वर (VPS/VM) कहा। लेकिन हर कोई विंडोज़ जैसा ओएस नहीं चाहता है। कुछ लिनक्स चाहते हैं। 20 साल पहले, "हाइपरवाइजर्स" नामक सॉफ्टवेयर का एक टुकड़ा आता है, जो एक ही मशीन से विंडोज और लिनक्स को चलाना संभव बनाता है, और इस तकनीक को वर्चुअलाइजेशन कहा जाता है। 60 साल पहले आईबीएम ने वर्चुअलाइजेशन पर काम शुरू किया था।
###### [समय रेखा, वैकल्पिक यहां पढ़ें](https://en.wikipedia.org/wiki/Timeline_of_virtualization_Development)।

####**स्तर एक**: ***हाइपरवाइजर के बीच लड़ाई- सॉफ्टवेयर का एक टुकड़ा जो ऑपरेटिंग सिस्टम के भीतर एक ऑपरेटिंग सिस्टम बनाता है।***

वर्चुअलाइजेशन: पूर्ण वर्चुअलाइजेशन (हार्डवेयर वर्चुअलाइजेशन), पैरा-वर्चुअलाइजेशन और ओएस-लेवल वर्चुअलाइजेशन तीन प्रकार के होते हैं।

***पूर्ण वर्चुअलाइजेशन:*** कर्नेल-आधारित हाइपरविजर (केवीएम आदि..) प्रत्येक मशीन के लिए रैम/कोर/हार्ड ड्राइव आदि संसाधनों फिक्स तरीके से बाट देता है।  । इसने VMs के बीच एक संसाधन समस्या पैदा कर दी | क्यूंकि कम संसाधन वाली सर्वर पे ज्यादा लोड हो सकता है और ज्यादा संसाधन वाले सर्वर पे कम।  क्यूंकि संसाधन फिक्स हैं इसलिए अगर कम संसाधन वाले सर्वर को ज्यादा रैम चाहिए होगा तो उसे नहीं उपलब्ध होगा क्यूंकि सबकुछ पहले से ही हमने फिक्स कर दिया है। यही कारण है की आप वर्चुअल बॉक्स को होस्टिंग के लिए नहीं उपयोग कर पाते। 


**मशीनों के बीच लड़ाई- रिसोर्स पूलिंग द्वारा हल**
कर्नेल में वर्चुअलाइजेशन के बजाय, इन नए OS आधारित हाइपरविजर (OpenVZ, आदि..) ने ram, HDD, आदि जैसे संसाधनों का एक पूल बनाया और आवश्यकता पड़ने पर उन्हें वर्चुअल मशीनों के साथ साझा किया। इसने कुछ हद तक संसाधन लड़ाई को नियंत्रित किया।

**वर्चुअल मशीनें ट्रंकी हैं, लाइट सॉल्यूशन की जरूरत है**

कर्नेल हाइपरवाइजर या ओएस-आधारित हाइपरवाइजर आधारित मशीनों को स्थापित करने के लिए बड़ी फाइलों [.iso (1-4 जीबी)] की आवश्यकता होती है। एक छोटी वर्चुअल मशीन को व्यवस्थित करने में समय लगता है। इसके अलावा, वे हार्ड ड्राइव पर भारी हैं। इसका मुकाबला करने के लिए, हाल के वर्षों में एक नई हल्की तकनीक का विकास किया गया है जिसे हम "कंटेनर" कहते हैं। वे कुछ हद तक ओएस-आधारित विज़ुअलाइज़र के समान हैं, सिवाय इसके कि उनके पास इंटरनेट पर संपीड़ित छवियां हैं जिन्हें आप डाउनलोड कर सकते हैं और अपनी पसंद का ओएस बना सकते हैं।

**जब हमारे पास चलने के लिए अच्छी जमीन है, तो हमें बादलो (cloud :) ) की आवश्यकता क्यों है** 

आज आप सबसे लोकप्रिय ओएस - उबंटू आईएसओ सीडी (1 जीबी+) से या एक कंटेनर (93 एमबी) में भी प्राप्त कर सकते हैं। सीडी और कंटेनर के बीच उबंटू प्राप्त करने के लिए आकार (size)  और समय (time to up) में  बड़ा अंतर क्लाउड की वास्तविक आवश्यकता है।

######** अवश्य पढ़ें:** अपनी क्लाउड सेवा  बनाने के संबंध में मेरी पिछली पोस्ट देखें। [भाग 1](https://dev.to/manishfoodtechs/creating-your-cloud-infrastructure-like-google-cloud-and-digital-ocean-from-scratch-part-1-3gnm) और [भाग-2 ](https://dev.to/manishfoodtechs/creating-your-cloud-infrastructure-like-google-cloud-and-digital-ocean-from-scratch-part-2-5f7f) और [Part-3](https ://dev.to/manishfoodtechs/creating-your-cloud-infrastructure-like-google-cloud-and-digital-ocean-from-scratch-part-3-coding-stuff-20eo)

#####स्तर एक (संक्षेप में): 20 साल पहले हम एक ऑपरेटिंग सिस्टम से कई ऑपरेटिंग सिस्टम प्राप्त करने में सक्षम थे लेकिन संसाधन एक समस्या थी। पूर्ण हार्डवेयर वर्चुअलाइजेशन फिर पैरावर्चुअलाइजेशन फिर कंटेनर। एलएक्सडी और डॉकर्स जाने-माने कंटेनर हैं। और पढ़ें: https://www.unixarena.com/2017/12/para-virtualization-full-virtualization-hardware-assisted-virtualization.html/

#**स्तर दो**: ***अपनी खुद की वर्चुअल मशीन बनाना चाहते हैं?***
आप केवीएम के साथ एक मेटल सर्वर खरीद सकते हैं या अपने विंडोज़ डेस्कटॉप में वर्चुअलबॉक्स या वीएमवेयर प्ले स्टेशन का उपयोग कर सकते हैं। आप विंडोज़ डेस्कटॉप पर अपने लिनक्स सर्वर को स्पिन करने के लिए .iso इमेज (लगभग 1GB) का उपयोग करेंगे।
   
#**स्तर तीन**: ***कंटेनर?***
.iso छवि (लगभग 1GB) का उपयोग करने के बजाय, हम अपनी वर्चुअल मशीनों को स्पिन करने के लिए इंटरनेट पर होस्ट की गई छोटी छवियों (100 एमबी) का उपयोग करेंगे (एक बेहतर शब्द एक कंटेनर है)।

दो सबसे लोकप्रिय कंटेनर प्रौद्योगिकियां एलएक्सडी और डॉकर्स हैं। लेकिन वे थोड़े अलग हैं। एलएक्सडी (LXD) में आप वीएम जैसे सर्वर की एक छवि लॉन्च करते हैं लेकिन डॉकर में, आप सर्वर और ऐप्स की छवियों को लॉन्च कर सकते हैं।

ठीक है, मैं आपको एक उदाहरण देता हूं:

मान लीजिए आपके पास PHP वेबसाइट है। इस PHP वेबसाइट को चलाने के लिए आपको एक अपाचे सर्वर (जैसे xampp) और MySQL डेटाबेस की आवश्यकता होती है।

LXD में आप एक ubuntu सर्वर बनाएंगे और उसके अंदर आप apache सर्वर और MySQL डेटाबेस को इंस्टॉल करेंगे। [१ कंटेनर अपाचे के अंदर रखता है, mysql]

लेकिन डॉकटर में, आपके पास दो अलग-अलग कंटेनर हो सकते हैं: एक अपाचे के लिए और दूसरा MySQL के लिए। और अपाचे सर्वर के लिए सिर्फ एक कंटेनर ही क्यों? आइए दो अपाचे कंटेनर और तीन MySQL लें ... यदि कोई विफल रहता है तो अन्य चलने लगेंगे ... और हमारा ऐप कभी भी "बंद नहीं होगा"। [विभिन्न कंटेनर अलग-अलग ऐप्स रखते हैं]

#**स्तर चार** : **कंटेनरों का उपयोग कैसे करें?**
कंटेनर सर्वर हैं !!! चलो इस तरह मान लेते हैं।
तो, हमें पता होना चाहिए:
(१) सर्वर कैसे लॉन्च करें।
(२) सर्वर कैसे शुरू करें।
(३) सर्वर के अंदर कोडिंग कैसे करें: - सर्वर के अंदर ऐप्स / प्रोग्राम डालें।
(४) सर्वर को कैसे रोकें।
(५) इंटरनेट के माध्यम से हमारे सर्वर को दुनिया के लिए कैसे सुलभ बनाया जाए।
(६) इससे नया सर्वर बनाने के लिए सर्वर की इमेज कैसे बनाएं।
(७) एक ही होस्ट के भीतर एक ही प्रोग्राम द्वारा अनेक सर्वरों का प्रबंधन कैसे करें।
(८) मेरे पास दुनिया के अलग-अलग हिस्सों में होस्ट किए गए सर्वर हैं। क्या मैं इसे एक कार्यक्रम द्वारा प्रबंधित कर सकता हूं?

#**पांचवां स्तर** : **उत्तर... कंटेनरों का उपयोग कैसे करें?**
एलएक्सडी स्थापित करें: snap install lxd
डॉकर स्थापित करें:sudo apt install docker.io -y && sudo systemctl enable --now docker && sudo usermod -aG docker root && docker --version

शुरू करने से पहले: याद रखें: उबंटू 'छवि' है और हम इस छवि से 'कंटेनर (सर्वर कहें)' बनाते हैं। मेजबान वह मशीन है जिसका उपयोग हम अपनी पसंद के कंटेनर जैसे उबंटू, सेंटोस, फेडोरा इत्यादि बनाने के लिए करते हैं।

सर्वर = कंटेनर (कहते हैं)

(१) सर्वर कैसे लॉन्च करें।
एलएक्सडी: lxc launch ubuntu:18.04 myfirstcontainer
डॉकर: docker pull ubuntu:latest औरdocker run -it myfirstcontainer ubuntu:latest

(२) सर्वर कैसे शुरू करें।
एलएक्सडी: lxc start myfirstcontainer
डॉकर: docker start myfirstcontainer

(३) सर्वर के अंदर कोडिंग कैसे करें: - सर्वर के अंदर ऐप्स / प्रोग्राम डालें।
चलो कंटेनर के अंदर आते हैं और कुछ कोडिंग करते हैं जैसे Nginx सर्वर स्थापित करना।
LXD: lxc exec my first container bash
Docker: docker ps -a --> कंटेनर आईडी प्राप्त करें और फिर docker exec -it ed58974dd bash

ed58974dd docker द्वारा दी गई कंटेनर आईडी है। एलएक्सडी के विपरीत, आपको डॉकर प्रदाता यादृच्छिक आईडी का उपयोग करना होगा।

इंस्टाल करने के बाद... exitकंटेनर से बाहर आने के लिए टाइप करें।

(४) सर्वर को कैसे रोकें।
एलएक्सडी: lxc stop myfirstcontainer
डॉकर: docker stop ed58974dd

(५) इंटरनेट
एलएक्सडी द्वारा हमारे सर्वर को दुनिया के लिए कैसे सुलभ बनाया जाए : जब भी आप एक कंटेनर बनाते हैं, तो आपको उस कंटेनर का एक आईपी पता मिलता है। ip aआपको कंटेनर का पता देगा या एलएक्ससी सूची देगा। हमने nginx के साथ एक lxd कंटेनर बनाया था। ngnix पोर्ट 80 पर सुनेगा। इंटरनिप
: 80 । लेकिन इस इंटर्नैप को इंटरनेट द्वारा एक्सेस नहीं किया जा सकता है। इंटरनेट पर केवल होस्ट आईपी उपलब्ध है। इस इंटर्निप को रूट करने के लिए : 80 से होस्टिप: 8945 (जो भी पोर्ट आप चाहते हैं) आपको iptables करने की आवश्यकता है।

https://dev.to/manishfoodtechs/networking-is-easy-connecting-multiple-vms-servers-containers-devices-on-single-external-ip-in-one-command-139a आपकी मदद करने के लिए यहां एक लेख है :)

डॉकर: कंटेनरों के निर्माण के बाद यह थोड़ा मुश्किल है। इसलिए आपको डोकर इमेज को स्पिन करने से पहले पता होना चाहिए कि आपको किस पोर्ट की आवश्यकता होगी। Nginx के इस उदाहरण के लिए हम इसके पोर्ट 80 को जानते हैं, इसलिए हमारा सिंटैक्स हो सकता हैdocker run -p 8945:80 -t -i Ubuntu। इसके अलावा, डॉकटर में iptables का उपयोग करने के तरीके हैं

(६) सर्वर से एक नया सर्वर बनाने के लिए उसकी छवि कैसे बनाएं?
अब हमने इसके अंदर एक Nginx रखने के लिए एक कंटेनर बनाया है। इस छवि के साथ एक नए कंटेनर को स्पिन करने के लिए हमें बाद की तारीख में इसका उपयोग करने की आवश्यकता हो सकती है।

एलएक्सडी: lxc stop myfirstcontainer

lxc publish myfirstcontainer --alias ubuntunginx
lxc image list
lxc image export ubuntunginx
lxc image import ubuntunginx.tar.gz --ubuntunginx
lxc launch ubuntunginx mysecondcontainer

निर्यात की गई छवि रूट/फ़ोल्डर में tar.gz के समान है ls। फिर आप इस tar.gz फ़ाइल को अपने ड्राइव या ईमेल पर निर्यात कर सकते हैं: या जो भी आप चाहते हैं

डोकर: docker commit -m "ubuntu1804" -a "root" ed58974dd manishfoodtechs/ubuntunginx:latest

टार बॉल के रूप में: docker export ed5 > ubuntunginx.tar.xz

डॉकर हब पर पुश करें: डॉकर में, आप अपनी छवियों को डॉकर हब पर धकेल सकते हैं।
docker push manishfoodtechs/ubuntunginx:latest
docker list images

(७) एक ही होस्ट के भीतर एक ही प्रोग्राम द्वारा कई सर्वरों का प्रबंधन कैसे करें?
एलएक्सडी: एलएक्सडी बड़े लड़कों के लिए है। यह आपको आपके रास्ते की स्वतंत्रता और असीमित रास्ता देता है। कुछ lxd कंटेनर प्रबंधन प्रोग्राम हैं जिन्हें आप lxd कंटेनरों को स्थापित और प्रबंधित कर सकते हैं: https://lxc-webpanel.github.io/

डॉकर: https://www.portaneer.io/

(८) मेरे पास दुनिया के विभिन्न हिस्सों में होस्ट किए गए सर्वर हैं। क्या मैं इसे एक कार्यक्रम द्वारा प्रबंधित कर सकता हूं?
कुबेरनेट्स और डॉकर-झुंड

मैं आपसे अपने लैपटॉप/डेस्कटॉप पर वीएमवेयर वर्कस्टेशन डाउनलोड करने का अनुरोध करूंगा। होस्ट के रूप में ubuntu 18.04 LTS सर्वर को स्पिन करने का प्रयास करें। फिर होस्ट के अंदर आप lxd और docker चला सकते हैं। इसके अलावा, LXC के अंदर docker चलाने का प्रयास करें। लेकिन आप docker के अंदर lxc नहीं चला सकते लेकिन docker के अंदर docker चला सकते हैं।

मुझे उम्मीद है कि आप लोगों को उपरोक्त लेख पसंद आया होगा और कुछ सीखा होगा।

मेरे टीम फॉर्म में शामिल होने के लिए आपका स्वागत है ।

संपर्क ईमेल: manishfoodtechs@gmail.com ।

यदि आपको कोई समस्या है, तो हमारी टीम पेशेवर परामर्श और वितरण में भी लगी हुई है।
आगे क्या?

***1. Learn about Podman: deamon less and rootless implementation of docker. More secure.***
{% link https://dev.to/manishfoodtechs/time-to-say-bye-bye-docker-era-of-docker-is-over-2n06 %}. ***2.How to install rootless docker.***
{% link https://dev.to/manishfoodtechs/rootless-docker-kick-docker-hackers-and-make-docker-more-secure-new-concept-70g %}


Original Post:
https://dev.to/manishfoodtechs/docker-for-extreme-beginners-in-desi-layman-language-1e0n

Read in your Language:
https://translate.google.com/?sl=auto&tl=hi&text=https%3A%2F%2Fdev.to%2Fmanishfoodtechs%2Fdocker-for-extreme-beginners-in-desi-layman-language-1e0n&op=translate