← تمام سوالات
Docker کیا ہے اور یہ کیسے کام کرتا ہے؟
اکثرابتدائیDevOps

Docker کیا ہے اور یہ کیسے کام کرتا ہے؟

مختصر جواب
ڈوکر پیکیجنگ اور ایپلی کیشنز کو کنٹینرز کے طور پر چلانے کا ایک کھلا پلیٹ فارم ہے: الگ تھلگ عمل جو میزبان کے لینکس کرنل کو شیئر کرتے ہیں (نام کی جگہوں اور cgroups کے ذریعے) ایک مکمل ورچوئل مشین کی ضرورت کے بجائے۔ یہ کلائنٹ سرور ماڈل کا استعمال کرتا ہے: docker کلائنٹ REST API پر dockerd ڈیمون کو کمانڈ بھیجتا ہے، جو تصاویر بناتا ہے اور ان سے کنٹینرز چلاتا ہے۔

یہ کیوں موجود ہے۔ ڈوکر آپ کو ایک ایپلیکیشن کو اس کے تمام انحصار (لائبریریز، کنفیگریشن، رن ٹائم) کے ساتھ ایک ہی آرٹفیکٹ — ایک امیج — میں پیک کرنے دیتا ہے اور اسے ڈیولپر لیپ ٹاپ، CI میں اور پروڈکشن میں یکساں طور پر چلانے دیتا ہے۔ یہ کلاسک "میری مشین پر کام کرتا ہے" کا مسئلہ حل کرتا ہے۔

کنٹینرز بمقابلہ ورچوئل مشینیں۔ ایک VM ہارڈ ویئر کو ورچوئلائز کرتا ہے اور ایک مکمل مہمان OS کو اپنے دانا کے ساتھ بھیجتا ہے۔ کنٹینر ایک الگ تھلگ عمل ہے جو میزبان کا دانا استعمال کرتا ہے۔ نتیجے کے طور پر، کنٹینرز ہلکے ہوتے ہیں، ایک سیکنڈ کے حصوں میں شروع ہوتے ہیں، اور کم وسائل استعمال کرتے ہیں۔ لیکن ایک کنٹینر ہلکا پھلکا VM نہیں ہے: یہ میزبان کرنل سے منسلک ہے، اور اس کی تنہائی کی حد VM کے مقابلے میں کمزور ہے۔ ایک VM میں ہارڈ ویئر سے نافذ کردہ تنہائی ہے، جبکہ مشترکہ دانا میں خطرے کو ممکنہ طور پر کنٹینر سے بچایا جا سکتا ہے - یہ رفتار اور کثافت کے لیے تجارت ہے۔ میزبان کو کنٹینر کی قسم سے مماثل ہونا چاہیے: لینکس کنٹینرز کو لینکس کرنل کی ضرورت ہوتی ہے، ونڈوز کنٹینرز کو ونڈوز کرنل کی ضرورت ہوتی ہے۔ macOS اور Windows پر، Docker Desktop شفاف طریقے سے ایک چھوٹا لینکس VM چلاتا ہے (جیسے WSL2 کے ذریعے)، اس لیے وہاں موجود لینکس کنٹینرز اس VM کے کرنل کو شیئر کرتے ہیں، نہ کہ آپ کے OS کے کرنل کو۔

آرکیٹیکچر (کلائنٹ-سرور)۔ فی ڈاکر کی دستاویزات:

  • docker کلائنٹ وہ بنیادی طریقہ ہے جس سے صارفین Docker کے ساتھ بات چیت کرتے ہیں۔ docker run جیسی کمانڈز ڈیمون کو بھیجی جاتی ہیں۔
  • dockerd ڈیمون کنٹینرز کی تعمیر، چلانے، اور تقسیم کرنے کا "بھاری اٹھانا" کرتا ہے اور تصاویر، کنٹینرز، نیٹ ورکس اور حجم جیسی اشیاء کا انتظام کرتا ہے۔
  • کلائنٹ ڈیمون سے REST API پر UNIX ساکٹ یا نیٹ ورک انٹرفیس کے ذریعے بات کرتا ہے، تاکہ وہ مختلف مشینوں پر چل سکیں۔
  • ایک رجسٹری تصاویر کو اسٹور کرتی ہے۔ پہلے سے طے شدہ عوامی ایک Docker Hub ہے۔

تصاویر اور کنٹینرز۔ ایک آسان مشابہت: ایک تصویر کلاس (یا ڈسک پر ایک پروگرام) کی طرح ہے، اور کنٹینر اس کی ایک مثال ہے (ایک چل رہا عمل)؛ آپ ایک تصویر سے کئی کنٹینرز شروع کر سکتے ہیں۔

  • ایک تصویر ایک کنٹینر بنانے کے لیے ہدایات کے ساتھ صرف پڑھنے کے لیے ٹیمپلیٹ ہے، جو تہوں سے بنایا گیا ہے۔ اس کی تعریف Dockerfile سے ہوتی ہے؛ جب آپ اسے تبدیل کرتے ہیں، صرف تبدیل شدہ تہوں کو دوبارہ بنایا جاتا ہے۔
  • ایک کنٹینر ایک امیج کی چلانے کے قابل مثال ہے۔ تصویر کی صرف پڑھنے کی تہوں کے اوپر یہ ایک پتلی لکھنے کے قابل پرت (کاپی آن رائٹ) شامل کرتا ہے۔ جب کنٹینر ہٹا دیا جاتا ہے تو وہاں لکھی ہوئی کوئی بھی چیز ضائع ہو جاتی ہے — یہی وجہ ہے کہ مستقل ڈیٹا کو حجم کی ضرورت ہوتی ہے۔

آئسولیشن کیسے کام کرتا ہے (ہڈ کے نیچے)۔ ڈوکرڈ براہ راست کرنل کو کال نہیں کرتا ہے - یہ کنٹینر لائف سائیکل مینجمنٹ کو کنٹینرڈ کو تفویض کرتا ہے، جو OCI رن ٹائم کا مطالبہ کرتا ہے۔ ڈوکر میں ڈیفالٹ runc ہے، لیکن رن ٹائم پلگ ایبل ہے (کرون، جی ویزر، کاٹا، وغیرہ)۔ اصل تنہائی لینکس کرنل کی خصوصیات سے آتی ہے:

  • نام کی جگہیں وسائل کو الگ کریں (فی مین 7 صفحہ 8 اقسام ہیں: پی آئی ڈی، نیٹ ورک، ماؤنٹ، یو ٹی ایس، آئی پی سی، صارف، سی گروپ، وقت)۔ ایک عمل صرف اس کے اپنے PIDs، اس کا اپنا نیٹ ورک اسٹیک، اور اسی طرح "دیکھتا ہے"۔
  • cgroups (کنٹرول گروپس) وسائل کے استعمال کی حد اور اکاؤنٹ (CPU، میموری، I/O)۔

عام فالو اپس۔ تصویری پرتیں محفوظ ہیں؛ docker compose ملٹی کنٹینر ایپس چلاتا ہے۔ ڈیٹا حجم کے ذریعے برقرار رہتا ہے (ایک کنٹینر بطور ڈیفالٹ عارضی ہوتا ہے)؛ اور OCI امیج فارمیٹ (امیج اسپیک)، رن ٹائم (رن ٹائم اسپیک) اور رجسٹری ڈسٹری بیوشن پروٹوکول (ڈسٹری بیوشن اسپیک) کو معیاری بناتا ہے - یہ تینوں وضاحتیں ایکو سسٹم کو انٹرآپریبل رکھتی ہیں۔

Dockerکنٹینرز

ابھی ڈاؤن لوڈ کریں اور اپنے کاموں کے لیے مفت آزمائیں!

Windows کے لیے ڈاؤن لوڈ کریں
10 15 مفت کریڈٹ • کریڈٹ کارڈ کی ضرورت نہیںورژن: لوڈ ہو رہا ہے…

بغیر انسٹالیشن - ڈاؤن لوڈ کرکے چلاؤ۔ بغیر رجسٹریشن - Google سے لاگ ان۔