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

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

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

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

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

आज्ञा विवरण
FROM बनाई जा रही डॉकर छवि के लिए उपयोग की जाने वाली आधार छवि निर्दिष्ट करता है।
WORKDIR कंटेनर के अंदर कार्यशील निर्देशिका सेट करता है।
COPY होस्ट से कंटेनर के फ़ाइल सिस्टम में फ़ाइलों या निर्देशिकाओं की प्रतिलिपि बनाता है।
ADD कंटेनर के फ़ाइल सिस्टम में फ़ाइलें, निर्देशिकाएँ या दूरस्थ URL जोड़ता है और फ़ाइल निष्कर्षण को संभाल सकता है।
RUN कंटेनर के वातावरण में एक कमांड निष्पादित करता है।
EXPOSE डॉकर को सूचित करता है कि कंटेनर रनटाइम पर निर्दिष्ट नेटवर्क पोर्ट पर सुनता है।

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

पहली स्क्रिप्ट इसके उपयोग को दर्शाती है COPY Dockerfile में कमांड। COPY निर्देश सीधा है और इसका उपयोग होस्ट सिस्टम से डॉकर कंटेनर के फाइल सिस्टम में फ़ाइलों या निर्देशिकाओं को कॉपी करने के लिए किया जाता है। इस उदाहरण में, स्क्रिप्ट की शुरुआत इससे होती है FROM कमांड, जो आधार छवि को इस प्रकार निर्दिष्ट करता है python:3.8-slim-buster . WORKDIR कमांड कंटेनर के अंदर कार्यशील निर्देशिका को सेट करता है /app . इसके बाद किया जाता है COPY कमांड, जो होस्ट पर वर्तमान निर्देशिका की सामग्री को कॉपी करता है /app कंटेनर में निर्देशिका. फ़ाइलों की प्रतिलिपि बनाने के बाद, RUN कमांड का उपयोग निर्दिष्ट आवश्यक पायथन पैकेजों को स्थापित करने के लिए किया जाता है requirements.txt फ़ाइल। अंततः EXPOSE कमांड पोर्ट 80 को बाहरी दुनिया के लिए उपलब्ध कराता है।

इसके विपरीत, दूसरी स्क्रिप्ट इसके उपयोग पर प्रकाश डालती है ADD Dockerfile में कमांड। पहली स्क्रिप्ट के समान, यह से शुरू होती है FROM आधार छवि और सेट करने के लिए आदेश WORKDIR कार्यशील निर्देशिका को परिभाषित करने के लिए आदेश। यहाँ मुख्य अंतर यह है ADD कमांड, जिसका उपयोग इस मामले में, किसी दूरस्थ URL से फ़ाइलें जोड़ने के लिए किया जाता है, https://example.com/data/archive.tar.gz . ADD कमांड न केवल फ़ाइलों की प्रतिलिपि बनाता है, बल्कि संपीड़ित फ़ाइलों को स्वचालित रूप से निकालने की क्षमता भी रखता है, जैसा कि बाद में दिखाया गया है RUN कमांड जो निकालता है archive.tar.gz में फ़ाइल करें /app निर्देशिका। इसके बाद, RUN कमांड आवश्यक पायथन पैकेज स्थापित करता है, और EXPOSE कमांड पोर्ट 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 का गहन विश्लेषण

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

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

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

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

डॉकर कॉपी और ऐड कमांड को समाप्त करना

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