डॉकरफाइल में 'कॉपी' और 'एडीडी' कमांड के बीच अंतर को समझना

Dockerfile

डॉकरफाइल कमांड्स की व्याख्या

डॉकरफाइल में 'कॉपी' और 'एडीडी' कमांड आपके कंटेनर के फाइल सिस्टम में फाइलों को पेश करने का काम करते हैं, लेकिन वे अलग-अलग कार्यक्षमताओं और सर्वोत्तम उपयोग परिदृश्यों के साथ आते हैं। कुशल डॉकरफ़ाइल प्रबंधन और आपके कंटेनरीकृत अनुप्रयोगों को अपेक्षित प्रदर्शन सुनिश्चित करने के लिए इन अंतरों को समझना आवश्यक है।

जबकि 'कॉपी' का उपयोग मुख्य रूप से सीधी फ़ाइल कॉपी करने के लिए किया जाता है, 'एडीडी' अतिरिक्त क्षमताएं प्रदान करता है, जैसे दूरस्थ यूआरएल को संभालना और संपीड़ित फ़ाइलों को निकालना। यह आलेख प्रत्येक कमांड की बारीकियों का पता लगाएगा, आपको मार्गदर्शन देगा कि आपके डॉकर बिल्ड को अनुकूलित करने के लिए एक के ऊपर एक कब उपयोग करना है।

आज्ञा विवरण
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 image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Dockerfile में ADD का उपयोग करना

डॉकरफ़ाइल उदाहरण

# Use an official Python runtime as a parent image
FROM python:3.8-slim-buster

# Set the working directory in the container
WORKDIR /app

# Add files from a remote URL
ADD https://example.com/data/archive.tar.gz /app/

# Extract the archive file
RUN tar -xzf /app/archive.tar.gz -C /app

# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

Dockerfile में COPY और ADD का गहन विश्लेषण

जबकि दोनों और कमांड होस्ट सिस्टम से कंटेनर के फाइल सिस्टम में फ़ाइलों की प्रतिलिपि बनाने के उद्देश्य को पूरा करते हैं, उनके पास अलग-अलग विशेषताएं और उपयोग के मामले होते हैं जो प्रत्येक को अलग-अलग परिदृश्यों में उपयुक्त बनाते हैं। आदेश सरल और अधिक पूर्वानुमेय है। इसका उपयोग बुनियादी फ़ाइल प्रतिलिपि के लिए सबसे अच्छा किया जाता है, जहाँ किसी अतिरिक्त प्रसंस्करण की आवश्यकता नहीं होती है, जैसे संग्रह निकालना या दूरस्थ फ़ाइलें लाना। यह कमांड सुनिश्चित करता है कि केवल स्थानीय फ़ाइलों और निर्देशिकाओं को कंटेनर में कॉपी किया जाता है, इस प्रकार एक स्वच्छ और सुरक्षित निर्माण वातावरण बनाए रखा जाता है।

दूसरी ओर, कमांड अधिक कार्यक्षमता प्रदान करता है लेकिन अतिरिक्त जटिलता और संभावित सुरक्षा जोखिमों के साथ। कमांड यूआरएल डाउनलोड को संभाल सकता है और स्वचालित रूप से संपीड़ित फ़ाइलों को निकाल सकता है , .gzip, और . यह उन मामलों में फायदेमंद हो सकता है जहां आपकी निर्माण प्रक्रिया के लिए दूरस्थ संपत्तियों या अभिलेखागार की आवश्यकता होती है जिन्हें छवि निर्माण के दौरान निकालने की आवश्यकता होती है। हालाँकि, ये अतिरिक्त सुविधाएँ जोखिमों के साथ आती हैं, जैसे दूरस्थ स्थानों से डाउनलोड करते समय फ़ाइलों की अनजाने में ओवरराइटिंग और सुरक्षा कमजोरियाँ। इसलिए, इनके बीच निर्णय लेते समय इन कारकों पर सावधानीपूर्वक विचार करना महत्वपूर्ण है और .

Dockerfile में COPY और ADD के बारे में सामान्य प्रश्न और उत्तर

  1. का प्राथमिक उपयोग क्या है Dockerfile में कमांड?
  2. कमांड का उपयोग मुख्य रूप से होस्ट सिस्टम से स्थानीय फ़ाइलों और निर्देशिकाओं को डॉकर कंटेनर में कॉपी करने के लिए किया जाता है।
  3. आपको इसका उपयोग कब करना चाहिए इसके बजाय आदेश दें ?
  4. आपको इसका उपयोग करना चाहिए जब आपको किसी URL से फ़ाइलों की प्रतिलिपि बनाने की आवश्यकता हो या जब आपको निर्माण प्रक्रिया के दौरान संपीड़ित फ़ाइलों को निकालने की आवश्यकता हो तो कमांड दें।
  5. के उपयोग के सुरक्षा निहितार्थ क्या हैं? आज्ञा?
  6. कमांड सुरक्षा जोखिम पैदा कर सकता है, खासकर दूरस्थ यूआरएल से फ़ाइलें डाउनलोड करते समय, क्योंकि यह संभावित रूप से मौजूदा फ़ाइलों को ओवरराइट कर सकता है या कमजोरियां पेश कर सकता है।
  7. हो सकता है संपीड़ित फ़ाइलों को निकालने का आदेश दें?
  8. नहीं, कमांड में संपीड़ित फ़ाइलों को निकालने की क्षमता नहीं है; यह बस उन्हें वैसे ही कॉपी करता है जैसे वे हैं।
  9. कैसे हुआ संपीड़ित फ़ाइलों को अलग तरीके से संभालें ?
  10. कमांड स्वचालित रूप से संपीड़ित फ़ाइलों को निकालता है जैसे कि , , और .bzip2 जब उन्हें कंटेनर में जोड़ा जाता है.
  11. क्या वाइल्डकार्ड का उपयोग करना संभव है? आज्ञा?
  12. हाँ, आप इसके साथ वाइल्डकार्ड का उपयोग कर सकते हैं एक पैटर्न से मेल खाने वाली कई फ़ाइलों या निर्देशिकाओं की प्रतिलिपि बनाने का आदेश।
  13. यदि कोई URL प्रदान किया गया तो क्या होगा? आदेश पहुंच योग्य नहीं है?
  14. यदि कोई यूआरएल प्रदान किया गया है कमांड पहुंच योग्य नहीं है, डॉकर निर्माण प्रक्रिया विफल हो जाएगी।
  15. सरल, स्थानीय फ़ाइल कॉपी ऑपरेशन के लिए आपको किस कमांड का उपयोग करना चाहिए?
  16. सरल, स्थानीय फ़ाइल प्रतिलिपि संचालन के लिए, आपको इसका उपयोग करना चाहिए आदेश दें क्योंकि यह अधिक सीधा और सुरक्षित है।
  17. हो सकता है कमांड का उपयोग स्थानीय और दूरस्थ दोनों स्रोतों से फ़ाइलें जोड़ने के लिए किया जाएगा?
  18. हां कमांड स्थानीय स्रोतों और दूरस्थ यूआरएल दोनों से फ़ाइलें जोड़ सकता है, जिससे यह कुछ परिदृश्यों में अधिक बहुमुखी बन जाता है।

यह समझना कि कब उपयोग करना है और आपके डॉकरफ़ाइल में आपके कंटेनर बिल्ड को अनुकूलित करने के लिए आवश्यक है। जबकि स्थानीय फ़ाइलों के लिए सीधा और सुरक्षित है, ADD अतिरिक्त जटिलता और संभावित सुरक्षा चिंताओं की कीमत पर अतिरिक्त क्षमताएं प्रदान करता है। अपनी विशिष्ट आवश्यकताओं के आधार पर सही कमांड चुनने से आपकी डॉकर छवियों की दक्षता और सुरक्षा बढ़ सकती है।