Dockerfiles میں CMD اور ENTRYPOINT کے درمیان فرق کو سمجھنا

Dockerfile

Dockerfiles میں CMD اور ENTRYPOINT کو کھولنا

Docker کی دنیا میں، موثر اور دوبارہ قابل استعمال تصاویر بنانا اکثر Dockerfile میں دستیاب مختلف ہدایات کو سمجھنے پر منحصر ہوتا ہے۔ اس طرح کے دو کمانڈز، CMD اور ENTRYPOINT، پہلی نظر میں ایک جیسے مقاصد کو پورا کرتے دکھائی دے سکتے ہیں، لیکن وہ کنٹینر کی ترتیب اور عملدرآمد میں الگ الگ کردار ادا کرتے ہیں۔ ان کمانڈز کے درمیان باریکیوں کو سمجھنے سے کنٹینر کے رویے کو ہموار کرنے اور بہترین کارکردگی کو یقینی بنانے میں مدد مل سکتی ہے۔

یہ مضمون CMD اور ENTRYPOINT کے درمیان فرق کو تلاش کرتا ہے، ان کے مخصوص افعال اور استعمال کے معاملات پر وضاحت فراہم کرتا ہے۔ مثالوں اور دستاویزات کی بصیرت کو تلاش کرکے، ہمارا مقصد ان ضروری Dockerfile کمانڈز کو بے نقاب کرنا ہے، جس سے آپ اپنے کنٹینرائزیشن ورک فلو میں ان کی پوری صلاحیت کو بروئے کار لا سکیں۔

کمانڈ تفصیل
WORKDIR ورکنگ ڈائرکٹری کو کنٹینر کے اندر سیٹ کرتا ہے جہاں بعد کے کمانڈز پر عمل درآمد کیا جائے گا۔
COPY فائلوں یا ڈائریکٹریوں کو میزبان مشین سے مخصوص راستے پر کنٹینر کے فائل سسٹم میں کاپی کرتا ہے۔
RUN موجودہ امیج کے اوپری حصے میں ایک نئی پرت میں کمانڈز کو انجام دیتا ہے اور نتائج کا ارتکاب کرتا ہے۔ پیکجوں کو انسٹال کرنے کے لیے استعمال کیا جاتا ہے۔
EXPOSE ڈوکر کو مطلع کرتا ہے کہ کنٹینر رن ٹائم پر مخصوص نیٹ ورک پورٹس پر سنتا ہے۔
ENV کنٹینر کے اندر ماحولیاتی متغیرات کو سیٹ کرتا ہے۔
CMD ENTRYPOINT ہدایات کے لیے یا کنٹینر میں کمانڈ کو چلانے کے لیے پہلے سے طے شدہ دلائل فراہم کرتا ہے۔
ENTRYPOINT ایک کمانڈ کی وضاحت کرتا ہے جو کنٹینر کے شروع ہونے پر ہمیشہ عمل میں لایا جائے گا، کنٹینر کو قابل عمل کے طور پر چلانے کی اجازت دیتا ہے۔

ڈاکر فائل اسکرپٹس کا تفصیلی تجزیہ

اوپر فراہم کردہ ڈاکر فائل اسکرپٹس کے استعمال کو ظاہر کرتی ہیں۔ اور ڈوکر کنٹینرز کے رویے کو ترتیب دینے کے لیے۔ پہلی مثال میں، ہم استعمال کرتے ہیں پہلے سے طے شدہ کمانڈ کی وضاحت کرنے کے لیے جو کنٹینر شروع ہونے پر چلتا ہے۔ یہ اسکرپٹ سے شروع ہوتا ہے۔ FROM ایک بنیادی تصویر استعمال کرنے کی ہدایت، اس کے بعد ورکنگ ڈائرکٹری سیٹ کرنے کے لیے۔ دی کمانڈ ایپلی کیشن فائلوں کو کنٹینر میں کاپی کرتا ہے، اور ضروری پیکجوں کو انسٹال کرتا ہے۔ دی EXPOSE کمانڈ مخصوص پورٹ کو قابل رسائی بناتا ہے، اور ماحولیاتی متغیرات کا تعین کرتا ہے۔ آخر میں، یہ بتاتا ہے کہ کنٹینر کو ازگر کی ایپلیکیشن بطور ڈیفالٹ چلانی چاہیے۔

دوسری مثال میں، ہم استعمال کرتے ہیں اس کمانڈ کی وضاحت کرنے کے لیے جو کنٹینر کے شروع ہونے پر ہمیشہ چلے گا، کنٹینر کو ایک قابل عمل کی طرح برتاؤ کرتا ہے۔ اسکرپٹ اسی طرح کے ڈھانچے کی پیروی کرتا ہے: سے شروع ہوتا ہے۔ استعمال کرتے ہوئے، بنیادی تصویر کی وضاحت کرنے کے لئے ورکنگ ڈائرکٹری سیٹ کرنے کے لیے، COPY درخواست فائلوں کو منتقل کرنے کے لیے، اور انحصار کو انسٹال کرنے کے لئے. دی اور کمانڈز پہلی مثال کی طرح استعمال ہوتے ہیں۔ اہم فرق کا استعمال ہے۔ ENTRYPOINT کے بجائے ، جو اس بات کو یقینی بناتا ہے کہ جب بھی کنٹینر چلتا ہے تو مخصوص کمانڈ پر عمل درآمد ہوتا ہے، قطع نظر اس کے کہ کنٹینر کو دیے گئے اضافی دلائل۔

Dockerfiles میں CMD اور ENTRYPOINT کا استعمال

سی ایم ڈی کا استعمال کرتے ہوئے ڈاکر فائل اسکرپٹ کی مثال

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

# 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

# Define environment variable
ENV NAME World

# Run app.py when the container launches
CMD ["python", "app.py"]

قابل عمل کنٹینرز کے لیے ENTRYPOINT کا استعمال

ENTRYPOINT کا استعمال کرتے ہوئے Dockerfile اسکرپٹ کی مثال

# Use an official Node.js runtime as a parent image
FROM node:14

# Set the working directory in the container
WORKDIR /usr/src/app

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

# Install any needed packages specified in package.json
RUN npm install

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

# Define environment variable
ENV PORT 8080

# Run the specified command when the container launches
ENTRYPOINT ["node", "server.js"]

اعلی درجے کی مثالوں کے ساتھ CMD اور ENTRYPOINT کو دریافت کرنا

جب Dockerfile کنفیگریشن کو گہرائی میں ڈالتے ہیں، تو اس کے ذریعے پیش کردہ لچک اور کنٹرول کو سمجھنا ضروری ہے۔ اور . یہ ہدایات کنٹینر کے باریک رویوں کی اجازت دیتی ہیں، خاص طور پر جب مشترکہ ہوں۔ مثال کے طور پر، دونوں کا استعمال کرتے ہوئے اور ENTRYPOINT ایک ڈاکر فائل میں ایک مضبوط حل پیش کرسکتا ہے جہاں ایک مقررہ کمانڈ سیٹ کرتا ہے اور پہلے سے طے شدہ پیرامیٹرز فراہم کرتا ہے۔ یہ امتزاج اس بات کو یقینی بناتا ہے کہ کنٹینر ایک مخصوص ایگزیکیوٹیبل چلاتا ہے جبکہ صارفین کو ایگزیکیوٹیبل کو تبدیل کیے بغیر ڈیفالٹ پیرامیٹرز کو اوور رائڈ کرنے کی اجازت دیتا ہے۔

ایک اور اہم پہلو یہ ہے کہ یہ کمانڈز رن ٹائم پر فراہم کردہ دلائل کے ساتھ کیسے تعامل کرتے ہیں۔ جب ایک دلیل کا استعمال کرتے ہوئے ایک کنٹینر پر منتقل کیا جاتا ہے ، یہ انٹری پوائنٹ کمانڈ میں دلیل کو جوڑتا ہے، اس طرح اعلیٰ درجے کا کنٹرول فراہم کرتا ہے۔ اس کے برعکس، استعمال کرتے وقت ، کمانڈ کو صارف کے مخصوص دلائل کے ذریعہ مکمل طور پر اوور رائڈ کیا جاسکتا ہے۔ یہ امتیاز ورسٹائل اور صارف دوست کنٹینرز بنانے کے لیے اہم ہے۔ ان تعاملات کو سمجھ کر، ڈویلپرز ایسے کنٹینرز ڈیزائن کر سکتے ہیں جو لچکدار اور پیش قیاسی دونوں ہوں، متنوع ماحول میں ہموار تعیناتی اور استعمال میں سہولت فراہم کریں۔

  1. کیا ہوتا ہے اگر CMD اور ENTRYPOINT دونوں کو ڈاکر فائل میں استعمال کیا جائے؟
  2. دی کمانڈ فراہم کردہ دلائل کے ساتھ چلے گی۔ پہلے سے طے شدہ پیرامیٹرز کے طور پر۔ یہ کنٹینر کو لچکدار ڈیفالٹ دلائل کے ساتھ ایک مقررہ قابل عمل ہونے کی اجازت دیتا ہے۔
  3. کیا رن ٹائم پر CMD کو اوور رائیڈ کیا جا سکتا ہے؟
  4. جی ہاں، کنٹینر چلاتے وقت ایک مختلف کمانڈ فراہم کرکے ہدایات کو اوور رائڈ کیا جاسکتا ہے۔
  5. کیا ENTRYPOINT کو رن ٹائم پر اوور رائیڈ کیا جا سکتا ہے؟
  6. اوور رائیڈنگ رن ٹائم کے وقت کے استعمال کی ضرورت ہوتی ہے۔ پرچم کے بعد نئی کمانڈ۔
  7. آپ کو CMD over ENTRYPOINT کب استعمال کرنا چاہیے؟
  8. استعمال کریں۔ جب آپ ڈیفالٹ کمانڈز یا پیرامیٹرز فراہم کرنا چاہتے ہیں جو آسانی سے اوور رائڈ ہو سکتے ہیں۔ استعمال کریں۔ جب آپ یہ یقینی بنانا چاہتے ہیں کہ ایک مخصوص کمانڈ ہمیشہ عمل میں آتی ہے۔
  9. CMD اور ENTRYPOINT تصویری وراثت کو کیسے متاثر کرتے ہیں؟
  10. جب کوئی تصویر دوسری تصویر سے وراثت میں ملتی ہے، اور والدین کی تصویر سے بچے کی تصویر میں اوور رائڈ کیا جا سکتا ہے۔
  11. CMD اور ENTRYPOINT کی شیل شکل کیا ہے؟
  12. شیل فارم کمانڈ کو شیل میں انجام دینے کی اجازت دیتا ہے، جو متعدد کمانڈز کو چلانے کے لیے کارآمد ثابت ہو سکتا ہے۔
  13. CMD اور ENTRYPOINT کی exec شکل کیا ہے؟
  14. exec فارم بغیر کسی شیل کے براہ راست کمانڈ چلاتا ہے، زیادہ کنٹرول اور کم وسائل فراہم کرتا ہے۔
  15. Docker متعدد CMD ہدایات کو کیسے ہینڈل کرتا ہے؟
  16. ڈوکر صرف آخری استعمال کرتا ہے۔ پچھلے کو نظر انداز کرتے ہوئے، ڈاکر فائل میں ہدایات۔
  17. کیا آپ سکرپٹ اور پیرامیٹرز کو ہینڈل کرنے کے لیے CMD اور ENTRYPOINT کو جوڑ سکتے ہیں؟
  18. ہاں، امتزاج اور لچکدار ڈیفالٹ پیرامیٹرز کے ساتھ ایک فکسڈ انٹری پوائنٹ اسکرپٹ کی اجازت دیتا ہے جسے اوور رائڈ کیا جا سکتا ہے۔

CMD اور ENTRYPOINT ضروری Dockerfile ہدایات ہیں جو مختلف مقاصد کو پورا کرتی ہیں۔ CMD ڈیفالٹ کمانڈز یا پیرامیٹرز سیٹ کرتا ہے جنہیں اوور رائیڈ کیا جا سکتا ہے، جبکہ ENTRYPOINT یقینی بناتا ہے کہ ایک مخصوص کمانڈ ہمیشہ چلتا ہے۔ ان اختلافات کو سمجھنے سے ڈویلپرز کو مختلف استعمال کے معاملات اور آپریشنل ضروریات کے مطابق لچکدار اور موثر کنٹینرز بنانے کی اجازت ملتی ہے۔