बंदरगाहों को उजागर करने के लिए डॉकरफाइल का उपयोग करना

Using Dockerfile Expose Ports



मौजूदा डॉकर छवियों का उपयोग करके एक कस्टम डॉकर छवि बनाना वास्तव में आसान है डॉकरफाइल . आमतौर पर लोग न्यूनतम आधार छवि का उपयोग करते हैं जैसे अल्पाइन या उबंटू/डेबियन उस उद्देश्य के लिए। मान लीजिए, आप NodeJS में लिखे अपने पसंदीदा वेब ऐप की एक कस्टम डॉकर छवि बनाना चाहते हैं। ऐप पोर्ट पर चलेगा 8080 . डिफ़ॉल्ट रूप से, आप पोर्ट पर वेब ऐप तक नहीं पहुंच पाएंगे 8080 अपने मेजबान मशीन से। आपको डॉकर को बताना होगा कि आप पोर्ट को खोलना या खोलना चाहते हैं 8080 इसे अपने होस्ट मशीन से एक्सेस करने में सक्षम होने के लिए।

इस लेख में, मैं आपको दिखाऊंगा कि बंदरगाहों का उपयोग कैसे करें डॉकरफाइल एक वास्तविक दुनिया के उदाहरण के साथ। आएँ शुरू करें।







सबसे पहले, हमें एक प्रोजेक्ट डायरेक्टरी बनानी होगी। इस डायरेक्टरी में, आपको सभी प्रोजेक्ट फाइल्स को रखना चाहिए और a डॉकरफाइल .



प्रोजेक्ट डायरेक्टरी बनाने के लिए निम्न कमांड चलाएँ: मायएप/ अपने उपयोगकर्ताओं की होम निर्देशिका में और उस पर नेविगेट करें:



$एमकेडीआईआर~/myapp&& सीडी~/myapp

वेब ऐप तैयार करना:

अब एक डायरेक्टरी बनाएं स्रोत/ के अंदर ~/मायएप/ निम्न आदेश के साथ निर्देशिका:

$एमकेडीआईआरएसआरसी

में स्रोत/ निर्देशिका, मेरे NodeJS एप्लिकेशन के सभी स्रोत कोड रखे जाएंगे।

मैं बस एक सरल बनाऊंगा app.js में फ़ाइल स्रोत/ निर्देशिका और पोर्ट पर एक साधारण वेब सर्वर चलाएं 8080 सिर्फ प्रदर्शन के लिए।

NS src/app.js फ़ाइल में कोड की निम्नलिखित पंक्तियाँ हैं:

डॉकरीफाइल लिखना और बंदरगाहों को उजागर करना:

अब a . बनाएं डॉकरफाइल में ~/मायप्प निम्न आदेश के साथ निर्देशिका:

$स्पर्शडॉकरफाइल

अब निम्न पंक्तियों में टाइप करें डॉकरफाइल और इसे बचाओ। मैं बाद में चर्चा करूंगा कि इन पंक्तियों का क्या अर्थ है।

यहां, अल्पाइन से:3.8 मतलब, का उपयोग करें अल्पाइन: 3.8 नई छवि के आधार के रूप में डॉकर छवि जो हम इससे बनाएंगे डॉकरफाइल .

रन एपीके अपडेट मतलब, चलाओ एपीके अपडेट आधार डॉकर छवि में आदेश अल्पाइन: 3.8 .

रन एपीके ऐड-नो-कैश नोडज मतलब, चलाओ एपीके जोड़ें में NodeJS प्रोग्रामिंग भाषा स्थापित करने का आदेश अल्पाइन: 3.8 डॉकर आधार छवि।

कॉपी ./src /app मतलब, सभी फाइलों को कॉपी करें ~/myapp/src के लिए निर्देशिका /अनुप्रयोग नई डॉकर छवि की निर्देशिका जिसे हम का उपयोग करके बनाएंगे डॉकरफाइल .

सीएमडी [/usr/bin/node, /app/app.js] मतलब, चलाओ /app/app.js नए कंटेनर से फ़ाइल का उपयोग कर नोड बाइनरी में स्थित है /usr/बिन/नोड .

अंत में, करने के लिए एक्सपोज़ 8080/टीसीपी मतलब, टीसीपी पोर्ट को एक्सपोज या ओपन करना 8080 मेजबान कंप्यूटर के लिए।

Dockerfile का उपयोग करके कस्टम डॉकर छवि बनाना:

अब एक कस्टम डॉकर इमेज बनाते हैं अल्पाइन-नोड:v1 का उपयोग डॉकरफाइल जिसे हमने अभी बनाया है।

पहले सुनिश्चित करें कि आप इसमें हैं ~/मायएप/ निर्देशिका और फिर अपनी कस्टम डॉकर छवि बनाने के लिए निम्न आदेश चलाएँ: अल्पाइन-नोड:v1 :

$डोकर बिल्ड-टीअल्पाइन-नोड:v1.

जैसा कि आप देख सकते हैं, कस्टम डॉकर छवि अल्पाइन-नोड:v1 बनाया जा रहा है। आवश्यक आधार डॉकर छवि और पैकेज इंटरनेट से खींचे जा रहे हैं।

जैसा कि आप देख सकते हैं, कस्टम डॉकर छवि अल्पाइन-नोड:v1 सफलतापूर्वक बनाया गया है।

कस्टम डॉकर छवि का परीक्षण:

अब हम कस्टम डॉकर छवि का परीक्षण कर सकते हैं अल्पाइन-नोड:v1 बहुत आसानी से। हमें बस एक कंटेनर बनाना है अल्पाइन-नोड:v1 छवि।

डॉकर कंटेनर बनाने के लिए निम्न कमांड चलाएँ: www से अल्पाइन-नोड:v1 डॉकर छवि:

$डोकर रन-डी -यह --नामwww अल्पाइन-नोड:v1

बर्तन www बनाया गया है।

आइए अब इनके आईपी पते का पता लगाएं www निम्नलिखित कमांड के साथ डॉकर कंटेनर:

$डोकर निरीक्षण www| पकड़पता

जैसा कि आप देख सकते हैं, मेरे मामले में, आईपी पता है १७२.१७.०.३ . इसलिए मेरे द्वारा लिखा गया NodeJS एप्लिकेशन पोर्ट पर वेब ब्राउज़र से सुलभ होना चाहिए 8080 इस आईपी पते की।

वोइला! मैं बंदरगाह तक पहुंच सकता हूं 8080 मेरे का www डॉकटर कंटेनर।

मूल रूप से आप अपनी कस्टम डॉकर छवियों में कुछ बंदरगाहों को उजागर करते हैं जिनका आप उपयोग कर रहे होंगे डॉकरफाइल .

Dockerfile का उपयोग करके TCP और UDP पोर्ट को उजागर करना:

इस लेख के पिछले भाग में, मैंने आपको दिखाया था कि कैसे एक टीसीपी पोर्ट का खुलासा करने के लिए a . का उपयोग किया जाता है डॉकरफाइल .

आप आसानी से एक टीसीपी पोर्ट का पर्दाफाश कर सकते हैं (मान लें कि टीसीपी पोर्ट 53 ) अपने में डॉकरफाइल निम्नलिखित पंक्ति के साथ:

अनावृत करना53/टीसीपी

आप एक यूडीपी पोर्ट भी दिखा सकते हैं (मान लें कि यूडीपी पोर्ट 53 ) आपके में निम्न पंक्ति के साथ डॉकरफाइल :

अनावृत करना53/यूडीपी

आप अपने में निम्न पंक्तियों के साथ एक ही समय में टीसीपी और यूडीपी पोर्ट का पर्दाफाश कर सकते हैं: डॉकरफाइल :

अनावृत करना53/टीसीपी
अनावृत करना53/यूडीपी

यदि आप निर्दिष्ट नहीं करते हैं कि किस प्रोटोकॉल (टीसीपी या यूडीपी) का उपयोग करना है, तो डिफ़ॉल्ट रूप से टीसीपी का उपयोग किया जाता है। उदाहरण के लिए, यदि आप अपने में निम्न पंक्ति लिखते हैं: डॉकरफाइल :

अनावृत करना53

तब डॉकर मान लेगा कि आप टीसीपी पोर्ट 53 का उपयोग करना चाहते हैं।

Dockerfile का उपयोग करके कई पोर्ट को उजागर करना:

मान लीजिए कि आप एक कस्टम MEAN स्टैक डॉकर छवि बनाना चाहते हैं। इस स्थिति में, आप कुछ पोर्ट पर एक HTTP सर्वर चला रहे होंगे (मान लें कि TCP पोर्ट 80 या 8080), एक FTP सर्वर जो TCP पोर्ट 21 पर चलता है, एक SQL डेटाबेस सर्वर (मान लें MySQL) जो TCP पोर्ट 3306 पर चलता है, या NoSQL डेटाबेस सर्वर (मान लें MongoDB) जो TCP पोर्ट 27017 या 27018 पर चलता है, एक SSH सर्वर जो TCP पोर्ट 22 पर चलता है। यह बहुत सारे पोर्ट हैं!

अच्छी खबर है; आप उपयोग करके बनाई गई अपनी कस्टम डॉकर छवि पर जितने चाहें उतने पोर्ट दिखा सकते हैं डॉकरफाइल .

उपरोक्त उदाहरण में बंदरगाहों को आपके में निम्नलिखित पंक्तियों के साथ उजागर किया जा सकता है डॉकरफाइल :

अनावृत करना80/टीसीपी
अनावृत करना8080/टीसीपी
अनावृत करनाइक्कीस/टीसीपी
अनावृत करना22/टीसीपी
अनावृत करना3306/टीसीपी
अनावृत करना२७०१७/टीसीपी
अनावृत करना२७०१८/टीसीपी

यदि आप चाहें, तो आप प्रोटोकॉल विनिर्देश को छोड़ सकते हैं क्योंकि डॉकर डिफ़ॉल्ट रूप से टीसीपी का उपयोग करता है और अपने में निम्न पंक्तियों के साथ वही काम करता है डॉकरफाइल :

अनावृत करना80
अनावृत करना8080
अनावृत करनाइक्कीस
अनावृत करना22
अनावृत करना3306
अनावृत करना२७०१७
अनावृत करना२७०१८

यदि आपको आवश्यकता हो, तो आप अपने में टीसीपी और यूडीपी पोर्ट मिला सकते हैं डॉकरफाइल . उदाहरण के लिए, यदि आप उपरोक्त उदाहरण के साथ DNS सर्वर (जो UDP पोर्ट 53 पर चलता है) चलाते हैं, तो आप अपने में निम्नलिखित पंक्तियाँ जोड़ेंगे डॉकरफाइल .

अनावृत करना80
अनावृत करना8080
अनावृत करनाइक्कीस
अनावृत करना22
अनावृत करना53/यूडीपी
अनावृत करना3306
अनावृत करना२७०१७
अनावृत करना२७०१८

तो इस तरह आप बंदरगाहों का उपयोग करके बेनकाब करते हैं डॉकरफाइल . इस बारे में और जानने के लिए डॉकरफाइल और बंदरगाहों को उजागर करना डॉकरफाइल , को पढ़िए डॉकरफाइल संदर्भ गाइड पर https://docs.docker.com/engine/reference/builder/#expose

इस लेख को पढ़ने के लिए धन्यवाद।