नवशिक्यांसाठी डॉकरः डॉकर म्हणजे काय आणि डॉकर कंटेनर कसे तयार करावे

जर आपण गेल्या काही वर्षांमध्ये प्रोग्रामिंग जगातील नवीनतम घडामोडींशी संपर्क साधत असाल तर आपल्याला डॉकर आणि डॉकर कंटेनरभोवती मोठा आवाज गोंधळ झाला असेल. डॉकरची ही लोकप्रियता विनाकारण नाही. विकसक अनुप्रयोगाच्या विकासाकडे कसे जातात याबद्दल डॉकरची ओळख मोठ्या प्रमाणात बदलली आहे.

जेव्हा अशा क्रांतिकारक तंत्रज्ञानाने प्रोग्रामिंगच्या जगाला धडक दिली तेव्हा कोणाला मागे राहायचे आहे? तर, आज आम्ही अनुप्रयोगांच्या विकासासाठी डॉकर कसे वापरावे हे शिकण्यासाठी आपल्यासाठी एक नवीन ट्यूटोरियल मालिका सुरू करीत आहोत. आपण डॉकरसाठी परिपूर्ण नवशिक्या असल्यास, ही ट्यूटोरियल मालिका आपल्यास प्रारंभ करण्यासाठी योग्य स्थान आहे.

आमच्या ट्यूटोरियल मालिकेच्या पहिल्या लेखात, आम्ही डॉकर नेमके काय आहे आणि विकसकांना डॉकरवर इतके प्रेम का आहे हे समजून घेत आहोत. आम्ही डॉकरच्या मूलभूत संकल्पनांसह आपल्याला परिचित करण्यासाठी आम्ही एक साधा नोड.जेएस अनुप्रयोग डॉकराइजिंग करू.


यापुढे आणखी कशासाठी थांबलो? चला सुरवात करूया!



डॉकर म्हणजे काय

डॉकर एक असे साधन आहे जे अनुप्रयोग तयार करण्यासाठी वापरले जाते; ते कंटेनरद्वारे अनुप्रयोग तयार करणे, उपयोजित करणे आणि चालविणे होय.


कंटेनरसह, सर्व लायब्ररी आणि अनुप्रयोग चालविण्यासाठी आवश्यक असलेली इतर अवलंबन उपयोजनांसाठी एकच पॅकेज म्हणून पॅक केली आहेत.

अ‍ॅप्लिकेशनला कंटेनर बनवण्याचे मुख्य लक्ष्य म्हणजे त्यांना समान सिस्टममध्ये चालणार्‍या इतर अनुप्रयोगांपासून दूर करणे. हा दृष्टिकोन अनुप्रयोगांना एकमेकांच्या क्रियेत व्यत्यय आणू नका आणि अनुप्रयोग देखभाल खूप सुलभ करते हे सुनिश्चित करते.

जरी समान सिस्टममध्ये चालणारे कंटेनर एक्झिक्यूशनमध्ये एकमेकांपासून वेगळे केले गेले असले तरीही ते समान ओएस कर्नल सामायिक करतात. म्हणूनच, अॅप्लिकेशन एक्जीक्यूशन, आभासी मशीन अलग ठेवण्यासाठी पर्यायी निवडीच्या तुलनेत कंटेनर अधिक हलके असतात.

आपल्या विंडोज ओएसवर चालणार्‍या कंटेनरयुक्त अनुप्रयोगास वातावरण बदलल्यानंतरही दुसर्‍या वापरकर्त्याच्या विंडोज मशीनमध्ये अडचण न घेता चालवण्याची हमी दिलेली आहे.


जरी डॉकरपूर्वी कंटेनर फार पूर्वीपासून वापरात आले असले तरी विकसक समाजातील कंटेनरचा वापर करून डॉकरची ओळख लोकप्रिय झाली. अनुप्रयोगाचे डॉकराइझिंग करताना दोन घटक वापरले जातात: डॉकफाइल आणि डॉकर प्रतिमा . चला ते काय आहेत ते शोधून काढा.

डॉकफाइल

डॉकफाइल ही एक मजकूर फाईल आहे ज्यात डॉकर प्रतिमा तयार करण्यासाठी आवश्यक आज्ञांचा एक संच आहे. डॉकफाइलमध्ये अंतर्निहित ओएस, भाषा, फाईल स्थान आणि इतर गोष्टींबरोबरच नेटवर्क पोर्टविषयी माहिती असते.

डॉकर प्रतिमा

आपण त्या ठिकाणी डॉकरची बिल्ड कमांड डॉकफिलीसह चालविता तेव्हा डॉकर प्रतिमा डॉकफाइलवर आधारित तयार केली जाते. अंतिम डॉकर कंटेनर तयार करण्यासाठी ते टेम्पलेट म्हणून कार्य करतात. एकदा तयार झाल्यानंतर, डॉकर प्रतिमा स्थिर असतात. आपण डॉकर प्रतिमेचा वापर करुन डॉकर कंटेनर तयार करण्यासाठी डॉकरच्या रन कमांडची विनंती करू शकता.



नोड.जेएस अनुप्रयोग डॉकरायझिंग

या ट्यूटोरियल मध्ये आपण नोड.जेएस dप्लिकेशन डॉकराइज करणार आहोत. आम्ही डॉकर कंटेनर चालू आणि चालू ठेवण्यासाठी चरण-दर-चरण पद्धतीचा अनुसरण करू.


1 - नोड.जेएस अनुप्रयोग तयार करा 2 - डॉकफाइल तयार करा 3 - डॉकर प्रतिमा तयार करा 4 - अनुप्रयोग कंटेनर तयार करा

आमच्या अ‍ॅपचे डॉकरायझिंग करण्यापूर्वी, आपण आपल्या सिस्टममध्ये डॉकर आणि नोड.जे स्थापित केलेले आहेत याची खात्री करुन घ्यावी.

  • तुमच्या सिस्टमवर डॉकर स्थापित करा Install या ट्यूटोरियलमध्ये डॉकर कसे प्रतिष्ठापीत करायचे हे मी सांगणार नाही, परंतु आपण डॉकर दस्तऐवजीकरणाचे अनुसरण करू शकता आणि आपल्या विंडोज किंवा उबंटू डेस्कटॉपवर डॉकर स्थापित करू शकता.
  • अधिकृत वेबसाइटवरून नोड.जे डाउनलोड आणि स्थापित करा

नोड.जेएस अनुप्रयोग तयार करा

कमांड-लाइन वरून नवीन प्रोजेक्ट निर्देशिकेत नेव्हिगेट करा आणि पॅकेज.जेसन फाईल तयार करण्यासाठी खालील कमांड चालवा ज्यात अनुप्रयोगाच्या अवलंबनांबद्दल माहिती आहे आणि स्क्रिप्ट प्रारंभ करा.

npm init -y |


नंतर, कमांड-लाइनवर हा आदेश चालवून आपल्या अनुप्रयोगावर अवलंबून म्हणून एक्सप्रेस स्थापित करा आणि जोडा. आम्ही अ‍ॅप तयार करण्यासाठी एक्सप्रेस वापरणार आहोत.

npm install express --save |

हे एक्सप्रेस आमच्या | _ _ _ _ | वर अवलंबन म्हणून जोडेल फाईल.

आता आपण एक्सप्रेस च्या मदतीने नोड applicationप्लिकेशन बनवू शकतो.


package.json नावाची फाईल तयार करा प्रोजेक्ट निर्देशिका मध्ये आणि फाईलमध्ये पुढील कोड जोडा.

app.js |

वरील कोड एक नोड सर्व्हर तयार करतो जो 3000 पोर्टवर येणार्‍या विनंत्या ऐकतो. आपण नोड सर्व्हर सुरू करण्यासाठी कमांड-लाइनवर ही आज्ञा चालवू शकता.

const express = require('express') const app = express() app.get('/', (req, res) => {
res.send('Hello World!') }) app.listen(3000, () => {
console.log('Node server has started running') })
|

आता आपल्या ब्राउझरवर जा आणि URL node app.js URL अनुसरण करा आणि आपल्याला मजकूर दिसेल | _ _ _ _ | पृष्ठावर.

आम्ही आमच्या प्रोजेक्टसाठी एक साधा नोड builtप्लिकेशन बनविला आहे. आता डॉकफाइल तयार करण्याकडे जाऊया.

डॉकफाइल तयार करा

डॉकफाइलमध्ये आम्ही डॉकर वातावरणासह आमचे नोड अ‍ॅप तयार करण्यासाठी आणि चालविण्यासाठी आवश्यक असलेली माहिती प्रदान करतो.

यामध्ये अनुप्रयोगामध्ये वापरली जाणारी भाषा आणि त्याची आवृत्ती निर्दिष्ट करणे, आमची प्रोजेक्ट डिरेक्टरी वर्किंग डिरेक्टरी म्हणून सेट करणे, वर्किंग डिरेक्टरीमधील सर्व फाईल्स कॉपी करणे, नेटवर्क पोर्ट सेट करणे आणि अनुप्रयोगासाठी कोणती फाइल एंट्री पॉईंट आहे हे निर्दिष्ट करणे समाविष्ट आहे. अधिक जटिल अनुप्रयोगांमध्ये, आपल्याला डॉकफॉरइलमध्ये वातावरण बदल आणि डेटाबेस URL देखील सेट करावे लागतील.

http://localhost:3000 |
  • कडून कमांड डॉकर हब वरून आमचा अ‍ॅप्लिकेशन विशिष्ट ओएसवर चालविण्यासाठी ओएस प्रतिमा पुनर्प्राप्त करतो. डॉकर हब डॉकर प्रतिमांची एक भांडार आहे जी आपण स्थानिक वातावरणात खेचू शकतो. आम्ही उबंटू-आधारित प्रतिमा पुनर्प्राप्त करीत आहोत ज्याने नोड.जे स्थापित केले आहेत. “नवीनतम” नोड आवृत्ती म्हणून वापरल्याने नवीनतम नोड आवृत्ती स्थापित केलेली प्रतिमा खेचते.
  • वर्कडीर कमांड ofप्लिकेशनची कार्यरत निर्देशिका सेट करते.
  • कॉपी करा कमांड चालू डाइरेक्टरीमधून (कमांड-लाइनवर) मागील चरणात सेट केलेल्या वर्किंग डिरेक्टरीमध्ये फायली कॉपी करते. आपण एकतर कॉपी करण्यासाठी फाईलचे नाव निर्दिष्ट करू शकता किंवा चालू निर्देशिका मधील सर्व फायली कार्यरत निर्देशिकेत कॉपी करण्यासाठी डबल फुल स्टॉप वापरू शकता.
  • चालवा आदेश अनुप्रयोग तयार करण्यासाठी आवश्यक असलेल्या सर्व अवलंबन स्थापित करतो. यात | _ _ + _ | मध्ये निर्दिष्ट केलेल्या सर्व अवलंबनांचा समावेश आहे फाईल.
  • एक्सपोज करा कमांड डॉकर कंटेनरपासून बाह्य जगासाठी पोर्ट उघडते. आम्ही डॉकर कंटेनरला पाठविलेल्या सर्व विनंत्या या पोर्टला प्राप्त होतात. पोर्ट विशेषत: 3000 वर सेट केले आहे कारण डॉकर कंटेनर मधील आमचा नोड अनुप्रयोग विनंत्या ऐकण्यासाठी वापरत असलेला पोर्ट आहे.
  • ENTRYPOINT अनुप्रयोग कसा सुरू करावा ते निर्दिष्ट करते. अनुप्रयोग प्रारंभ करण्यासाठी आम्ही एकाच कमांडला प्रदान केलेल्या अ‍ॅरेमध्ये डॉकर सामील होतो. या प्रकरणात, Hello World!

डॉकर प्रतिमा तयार करीत आहे

डॉकफाईलमधून डॉकर प्रतिमा तयार करण्यासाठी खालील आदेश वापरा.

FROM node:latest WORKDIR /dockerTutorial COPY . . RUN npm install EXPOSE 3000 ENTRYPOINT ['node', 'app.js'] |

package.json | डॉकर प्रतिमेचे नाव आहे. डॉट प्रोजेक्ट निर्देशिकेचा फाईल पथ दर्शवितो, जेथे आपण सध्या कमांड लाइनमध्ये आहोत.

सह ओएस प्रतिमा निर्दिष्ट असल्यास कडून आज्ञा, नोड: नवीनतम , याक्षणी आपल्या डिव्हाइसमध्ये नाही, जेव्हा आपण वरील आज्ञा चालवाल तेव्हा ते डॉकर हब वरून ओढले जाईल.

प्रतिमा खेचल्यानंतर, डॉकफाइल मधील प्रत्येक कमांड एकामागून एक कार्यान्वित होईल.

अंमलबजावणीच्या शेवटी, जर आपल्याला संदेश दिसत असेल तर यशस्वीरित्या बांधले , अनुप्रयोगाची डॉकर प्रतिमा यशस्वीरित्या तयार केली गेली आहे. स्थानिक प्रतिमा भांडारात अंगभूत डॉकर प्रतिमा पाहण्यासाठी हा आदेश चालवा.

node app.js |

आउटपुट असे दिसते

कंटेनर तयार करणे

आमचा डॉकर कंटेनर तयार करण्यासाठी आम्ही अंगभूत प्रतिमा वापरू शकतो. कंटेनर तयार करण्यासाठी डॉकर रन कमांड वापरा.

docker build -t docker-tutorial . |

येथे, 8080 आणि 3000 संख्या कंटेनरच्या बाह्य आणि अंतर्गत दर्शवते. बाह्य पोर्ट, 8080, आम्ही आमच्या ब्राउझरद्वारे अनुप्रयोगासह कनेक्ट होण्यासाठी वापरत असलेले पोर्ट आहे. अंतर्गत बंदर, 3000, हा पोर्ट आहे जो आपला अनुप्रयोग येणार्‍या विनंत्यांसाठी ऐकतो. डॉकर कंटेनर अंतर्गत पोर्टवर दिलेला बाह्य पोर्ट मॅप करते.

| URL _ _ _ _ | भेट द्या ब्राउझरवर आणि पृष्ठ आपणास Docker-tutorial सह मिळाल्यास ते पहा | _ _ _ _ | भेट दिल्यावर आपल्याला मिळालेला संदेश आधी. जर होय, तर आपला डॉकर कंटेनर चालू आहे आणि चालू आहे.

आपण या आदेशाचा वापर आपल्या डिव्हाइसवरील सर्व चालू असलेले डॉकर कंटेनर पाहण्यासाठी वापरू शकता.

docker images |

ही कमांड तुम्हाला असे आउटपुट देईल. आम्ही येथे कार्यरत कंटेनरचे CONTAINER_ID आणि NAME शोधू शकतो.

आपल्या अनुप्रयोगामध्ये पर्यावरणीय चल समाविष्ट करणे

लक्षात ठेवा मी पर्यावरणीय चलांसह असलेल्या अनुप्रयोगासाठी डॉकफाइलमध्ये अधिक निर्देशांची आवश्यकता कशी आहे? ते चालू असलेल्या वातावरणासह पर्यावरणीय बदलांचे मूल्य.

सर्व्हर चालू असताना आमच्या नोड अॅपने पोर्टचे स्पष्टपणे कसे वर्णन केले ते लक्षात घ्या. हा दृष्टिकोन अतुलनीय आणि त्रुटीयुक्त आहे. अशा परिस्थितीत आम्ही नोड सर्व्हरसाठी 3000 पोर्ट न उघडणार्‍या वातावरणामध्ये आपला अनुप्रयोग चालवितो, आमचा अनुप्रयोग कार्य करणे थांबवते.

सर्वात योग्य अंमलबजावणी म्हणजे पोर्ट क्रमांक अनुप्रयोगातून काढून घेणे. त्याऐवजी आम्ही पोर्ट नंबरच्या जागी व्हेरिएबलचे नाव वापरतो आणि चालू वातावरणात त्या व्हेरिएबलसाठी व्हॅल्यू सेट करतो. आमच्या बाबतीत, चालणारे वातावरण हे डॉकर कंटेनर आहे. तर आपल्याला पोर्ट क्रमांक डॉकफॉर्ममध्ये एन्व्हायंटमेंट व्हेरिएबल म्हणून जोडावे लागेल.

आपण हे कसे करू शकतो ते पाहूया.

प्रथम, त्याच्या डॉकॅरपाईलच्या मूल्यासह पर्यावरणीय चल जोडा. हे पूर्ण करण्यासाठी आम्हाला डॉकफाइलमध्ये एक नवीन कमांड जोडावी लागेल.

docker run -p 8080:3000 docker-tutorial |

ENV कमांड व्हेरिएबल व्हेरिएबलचे नाव व व्हॅल्यू असाईनमेंट वापरुन आपण आपल्या डॉकफाइलमध्ये नवीन पर्यावरण बदलू शकतो. पोर्ट क्रमांकाचा स्पष्ट उल्लेख न करण्यासाठी एक्सपोज 3000 कमांड कशी बदलली गेली हे आपल्या लक्षात आले? त्याऐवजी, अचूक पोर्ट क्रमांक मिळविण्यासाठी तयार केलेल्या पोर्ट व्हेरिएबलचा संदर्भ आहे. या दृष्टिकोनानुसार, आम्हाला पोर्ट क्रमांक बदलवायचा असल्यास, आम्हाला केवळ आमच्या कोडमध्ये एक जागा बदलली पाहिजे, ज्यामुळे आमचा अनुप्रयोग कायम राखणे सोपे होते.

आता आम्ही डॉकफाइल बदलले आहे, पुढील चरण तयार केलेल्या वातावरणीय चलचा संदर्भ घेण्यासाठी अ‍ॅप.जे बदलत आहे. यासाठी आम्ही ऐकण्याच्या पद्धतीमध्ये वापरलेल्या पोर्ट क्रमांक 3000 ला प्रोसेस.एन्व्ह.एप.आर.टी च्या जागी बदलतो.

http://localhost:8080 |

आम्ही आमच्या filesप्लिकेशन फाइल्स आणि डॉकफाइलमध्ये बदल केल्यामुळे आम्हाला नवीन कंटेनरसाठी नवीन प्रतिमा तयार करावी लागेल. परंतु प्रथम हे मिळविण्यासाठी आम्हाला सध्या चालू असलेले डॉकर कंटेनर थांबवावे लागतील.

कंटेनर थांबविण्यासाठी आम्ही डॉकर स्टॉप कमांड वापरू शकतो.

Hello World! |

या आदेशामध्ये वापरलेले मूल्य, एफ 10, कंटेनरच्या आयडीचे पहिले तीन अंक आहेत.

चालू कंटेनर थांबवण्यासाठी आपण डॉकर किल ही आज्ञा वापरू शकतो.

http://localhost:3000 |

डॉकर किल आणि डॉकर स्टॉपमधील फरक असा आहे की संसाधने वापरुन आणि राज्याची बचत करुन डॉकर स्टॉप कंटेनरला अधिक मोहकपणे थांबविते. डॉकर किल तथापि, संसाधने योग्यरित्या सोडल्याशिवाय किंवा राज्य वाचविल्याशिवाय कंटेनर अधिक अचानकपणे थांबवते. उत्पादन वातावरणामध्ये असलेल्या कंटेनरसाठी, कंटेनर थांबविण्यासाठी डॉकर स्टॉप वापरणे अधिक चांगली निवड आहे.

चालू असलेला कंटेनर थांबविल्यानंतर, यंत्राच्या वातावरणावरून कंटेनरने खाली दिलेली उर्वरित जागा खाली दिलेल्या आदेशाद्वारे स्वच्छ केल्याचे सुनिश्चित करा.

डिमन मोडमध्ये कंटेनर चालवित आहे

जेव्हा आपण कंटेनर थांबविण्यासाठी वरील कमांड चालवण्याचा प्रयत्न करता तेव्हा आपण लक्षात येईल की आपण कंटेनर तयार करण्यासाठी वापरलेला टर्मिनल टॅब आम्ही कंटेनर मारल्याशिवाय अधिक कमांड चालविण्यासाठी वापरला जाऊ शकत नाही. नवीन कमांड्स चालविण्यासाठी वेगळा टॅब वापरुन यासंदर्भात एक कसूर शोधू शकतो.

पण एक चांगला दृष्टीकोन आहे. आम्ही डिमन मोडमध्ये कंटेनर चालवू शकतो. डिमन मोडसह, आउटपुट दर्शविण्यासाठी वर्तमान टॅबचा वापर न करता कंटेनर पार्श्वभूमीवर चालतो.

डिमन मोडमध्ये कंटेनर सुरू करण्यासाठी, आपल्याला डॉकर रन कमांडमध्ये एक अतिरिक्त-डी ध्वजांकन जोडावे लागेल.

docker ps |

परस्परसंवादी मोडमध्ये कंटेनर चालवित आहे

परस्परसंवादी मोडमध्ये कंटेनर चालविण्यासाठी कंटेनर आधीपासूनच चालू असावा. एकदा परस्परसंवादी मोडमध्ये, आपण कंटेनरमध्ये फायली जोडण्यासाठी किंवा काढण्यासाठी आदेश चालवू शकता, फायली सूचीबद्ध करू शकता किंवा आम्ही सहसा वापरत असलेल्या इतर बॅश आदेश चालवू शकता.

परस्परसंवादी मोडमध्ये कंटेनर चालविण्यासाठी खालील आज्ञा वापरा.

FROM node:latest WORKDIR /dockerTutorial COPY . . ENV PORT=3000 RUN npm install EXPOSE $PORT ENTRYPOINT ['node', 'app.js'] |

येथे, e37 कंटेनर आयडी आहे. बॅश कमांडचा वापर करून परस्परसंवादी मोडसह प्ले करा.



निष्कर्ष

आमच्या डॉकर ट्यूटोरियल मालिकेच्या पहिल्या ट्यूटोरियलमध्ये, आपण साध्या Node.js अनुप्रयोगासाठी डॉकर कंटेनर कसे तयार करावे हे शिकलात. परंतु डॉकर आणि कंटेनरसह आपण आणखी बरेच काही करू शकता. आमच्या आगामी ट्यूटोरियल मध्ये आपण मायक्रो सर्व्हिसेसद्वारे बनविलेले applicationप्लिकेशन वापरुन डेटाबेस, व्हॉल्यूम आणि एकाधिक कंटेनर बरोबर कसे कार्य करावे ते पाहू.

मनोरंजक लेख