डॉकरफाइल कमांड्स की व्याख्या
डॉकरफाइल में 'कॉपी' और 'एडीडी' कमांड आपके कंटेनर के फाइल सिस्टम में फाइलों को पेश करने का काम करते हैं, लेकिन वे अलग-अलग कार्यक्षमताओं और सर्वोत्तम उपयोग परिदृश्यों के साथ आते हैं। कुशल डॉकरफ़ाइल प्रबंधन और आपके कंटेनरीकृत अनुप्रयोगों को अपेक्षित प्रदर्शन सुनिश्चित करने के लिए इन अंतरों को समझना आवश्यक है।
जबकि 'कॉपी' का उपयोग मुख्य रूप से सीधी फ़ाइल कॉपी करने के लिए किया जाता है, 'एडीडी' अतिरिक्त क्षमताएं प्रदान करता है, जैसे दूरस्थ यूआरएल को संभालना और संपीड़ित फ़ाइलों को निकालना। यह आलेख प्रत्येक कमांड की बारीकियों का पता लगाएगा, आपको मार्गदर्शन देगा कि आपके डॉकर बिल्ड को अनुकूलित करने के लिए एक के ऊपर एक कब उपयोग करना है।
| आज्ञा | विवरण |
|---|---|
| FROM | बनाई जा रही डॉकर छवि के लिए उपयोग की जाने वाली आधार छवि निर्दिष्ट करता है। |
| WORKDIR | कंटेनर के अंदर कार्यशील निर्देशिका सेट करता है। |
| COPY | होस्ट से कंटेनर के फ़ाइल सिस्टम में फ़ाइलों या निर्देशिकाओं की प्रतिलिपि बनाता है। |
| ADD | कंटेनर के फ़ाइल सिस्टम में फ़ाइलें, निर्देशिकाएँ या दूरस्थ URL जोड़ता है और फ़ाइल निष्कर्षण को संभाल सकता है। |
| RUN | कंटेनर के वातावरण में एक कमांड निष्पादित करता है। |
| EXPOSE | डॉकर को सूचित करता है कि कंटेनर रनटाइम पर निर्दिष्ट नेटवर्क पोर्ट पर सुनता है। |
डॉकरफाइल कमांड की विस्तृत व्याख्या
पहली स्क्रिप्ट इसके उपयोग को दर्शाती है Dockerfile में कमांड। निर्देश सीधा है और इसका उपयोग होस्ट सिस्टम से डॉकर कंटेनर के फाइल सिस्टम में फ़ाइलों या निर्देशिकाओं को कॉपी करने के लिए किया जाता है। इस उदाहरण में, स्क्रिप्ट की शुरुआत इससे होती है कमांड, जो आधार छवि को इस प्रकार निर्दिष्ट करता है python:3.8-slim-buster . कमांड कंटेनर के अंदर कार्यशील निर्देशिका को सेट करता है . इसके बाद किया जाता है कमांड, जो होस्ट पर वर्तमान निर्देशिका की सामग्री को कॉपी करता है /app कंटेनर में निर्देशिका. फ़ाइलों की प्रतिलिपि बनाने के बाद, कमांड का उपयोग निर्दिष्ट आवश्यक पायथन पैकेजों को स्थापित करने के लिए किया जाता है फ़ाइल। अंततः कमांड पोर्ट 80 को बाहरी दुनिया के लिए उपलब्ध कराता है।
इसके विपरीत, दूसरी स्क्रिप्ट इसके उपयोग पर प्रकाश डालती है Dockerfile में कमांड। पहली स्क्रिप्ट के समान, यह से शुरू होती है आधार छवि और सेट करने के लिए आदेश कार्यशील निर्देशिका को परिभाषित करने के लिए आदेश। यहाँ मुख्य अंतर यह है ADD कमांड, जिसका उपयोग इस मामले में, किसी दूरस्थ URL से फ़ाइलें जोड़ने के लिए किया जाता है, . कमांड न केवल फ़ाइलों की प्रतिलिपि बनाता है, बल्कि संपीड़ित फ़ाइलों को स्वचालित रूप से निकालने की क्षमता भी रखता है, जैसा कि बाद में दिखाया गया है कमांड जो निकालता है archive.tar.gz में फ़ाइल करें निर्देशिका। इसके बाद, कमांड आवश्यक पायथन पैकेज स्थापित करता है, और कमांड पोर्ट 80 को उपलब्ध कराता है।
Dockerfile में COPY का उपयोग करना
डॉकरफ़ाइल उदाहरण
# Use an official Python runtime as a parent imageFROM python:3.8-slim-buster# Set the working directory in the containerWORKDIR /app# Copy the current directory contents into the container at /appCOPY . /app# Install any needed packages specified in requirements.txtRUN pip install --no-cache-dir -r requirements.txt# Make port 80 available to the world outside this containerEXPOSE 80
Dockerfile में ADD का उपयोग करना
डॉकरफ़ाइल उदाहरण
# Use an official Python runtime as a parent imageFROM python:3.8-slim-buster# Set the working directory in the containerWORKDIR /app# Add files from a remote URLADD https://example.com/data/archive.tar.gz /app/# Extract the archive fileRUN tar -xzf /app/archive.tar.gz -C /app# Install any needed packages specified in requirements.txtRUN pip install --no-cache-dir -r requirements.txt# Make port 80 available to the world outside this containerEXPOSE 80
Dockerfile में COPY और ADD का गहन विश्लेषण
जबकि दोनों और कमांड होस्ट सिस्टम से कंटेनर के फाइल सिस्टम में फ़ाइलों की प्रतिलिपि बनाने के उद्देश्य को पूरा करते हैं, उनके पास अलग-अलग विशेषताएं और उपयोग के मामले होते हैं जो प्रत्येक को अलग-अलग परिदृश्यों में उपयुक्त बनाते हैं। आदेश सरल और अधिक पूर्वानुमेय है। इसका उपयोग बुनियादी फ़ाइल प्रतिलिपि के लिए सबसे अच्छा किया जाता है, जहाँ किसी अतिरिक्त प्रसंस्करण की आवश्यकता नहीं होती है, जैसे संग्रह निकालना या दूरस्थ फ़ाइलें लाना। यह कमांड सुनिश्चित करता है कि केवल स्थानीय फ़ाइलों और निर्देशिकाओं को कंटेनर में कॉपी किया जाता है, इस प्रकार एक स्वच्छ और सुरक्षित निर्माण वातावरण बनाए रखा जाता है।
दूसरी ओर, कमांड अधिक कार्यक्षमता प्रदान करता है लेकिन अतिरिक्त जटिलता और संभावित सुरक्षा जोखिमों के साथ। कमांड यूआरएल डाउनलोड को संभाल सकता है और स्वचालित रूप से संपीड़ित फ़ाइलों को निकाल सकता है , .gzip, और . यह उन मामलों में फायदेमंद हो सकता है जहां आपकी निर्माण प्रक्रिया के लिए दूरस्थ संपत्तियों या अभिलेखागार की आवश्यकता होती है जिन्हें छवि निर्माण के दौरान निकालने की आवश्यकता होती है। हालाँकि, ये अतिरिक्त सुविधाएँ जोखिमों के साथ आती हैं, जैसे दूरस्थ स्थानों से डाउनलोड करते समय फ़ाइलों की अनजाने में ओवरराइटिंग और सुरक्षा कमजोरियाँ। इसलिए, इनके बीच निर्णय लेते समय इन कारकों पर सावधानीपूर्वक विचार करना महत्वपूर्ण है और .
Dockerfile में COPY और ADD के बारे में सामान्य प्रश्न और उत्तर
- का प्राथमिक उपयोग क्या है Dockerfile में कमांड?
- कमांड का उपयोग मुख्य रूप से होस्ट सिस्टम से स्थानीय फ़ाइलों और निर्देशिकाओं को डॉकर कंटेनर में कॉपी करने के लिए किया जाता है।
- आपको इसका उपयोग कब करना चाहिए इसके बजाय आदेश दें ?
- आपको इसका उपयोग करना चाहिए जब आपको किसी URL से फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता हो या जब आपको निर्माण प्रक्रिया के दौरान संपीड़ित फ़ाइलों को निकालने की आवश्यकता हो तो कमांड दें।
- के उपयोग के सुरक्षा निहितार्थ क्या हैं? आज्ञा?
- कमांड सुरक्षा जोखिम पैदा कर सकता है, खासकर दूरस्थ यूआरएल से फ़ाइलें डाउनलोड करते समय, क्योंकि यह संभावित रूप से मौजूदा फ़ाइलों को ओवरराइट कर सकता है या कमजोरियां पेश कर सकता है।
- हो सकता है संपीड़ित फ़ाइलों को निकालने का आदेश दें?
- नहीं, कमांड में संपीड़ित फ़ाइलों को निकालने की क्षमता नहीं है; यह बस उन्हें वैसे ही कॉपी करता है जैसे वे हैं।
- कैसे हुआ संपीड़ित फ़ाइलों को अलग तरीके से संभालें ?
- कमांड स्वचालित रूप से संपीड़ित फ़ाइलों को निकालता है जैसे कि , , और .bzip2 जब उन्हें कंटेनर में जोड़ा जाता है.
- क्या वाइल्डकार्ड का उपयोग करना संभव है? आज्ञा?
- हाँ, आप इसके साथ वाइल्डकार्ड का उपयोग कर सकते हैं एक पैटर्न से मेल खाने वाली कई फ़ाइलों या निर्देशिकाओं की प्रतिलिपि बनाने का आदेश।
- यदि कोई URL प्रदान किया गया तो क्या होगा? आदेश पहुंच योग्य नहीं है?
- यदि कोई यूआरएल प्रदान किया गया है कमांड पहुंच योग्य नहीं है, डॉकर निर्माण प्रक्रिया विफल हो जाएगी।
- सरल, स्थानीय फ़ाइल कॉपी ऑपरेशन के लिए आपको किस कमांड का उपयोग करना चाहिए?
- सरल, स्थानीय फ़ाइल प्रतिलिपि संचालन के लिए, आपको इसका उपयोग करना चाहिए आदेश दें क्योंकि यह अधिक सीधा और सुरक्षित है।
- हो सकता है कमांड का उपयोग स्थानीय और दूरस्थ दोनों स्रोतों से फ़ाइलें जोड़ने के लिए किया जाएगा?
- हां कमांड स्थानीय स्रोतों और दूरस्थ यूआरएल दोनों से फ़ाइलें जोड़ सकता है, जिससे यह कुछ परिदृश्यों में अधिक बहुमुखी बन जाता है।
यह समझना कि कब उपयोग करना है और आपके डॉकरफ़ाइल में आपके कंटेनर बिल्ड को अनुकूलित करने के लिए आवश्यक है। जबकि स्थानीय फ़ाइलों के लिए सीधा और सुरक्षित है, ADD अतिरिक्त जटिलता और संभावित सुरक्षा चिंताओं की कीमत पर अतिरिक्त क्षमताएं प्रदान करता है। अपनी विशिष्ट आवश्यकताओं के आधार पर सही कमांड चुनने से आपकी डॉकर छवियों की दक्षता और सुरक्षा बढ़ सकती है।