ڈوکر کو سمجھنا

میں اب کئی مہینوں سے ویب پروجیکٹس کی ڈیولپمنٹ/ڈیلیوری کے عمل کو ڈھانچے کے لیے استعمال کر رہا ہوں۔ میں حبرخبر کے قارئین کو ڈاکر کے بارے میں تعارفی مضمون کا ترجمہ پیش کرتا ہوں۔ "ڈوکر کو سمجھنا".

ڈاکر کیا ہے؟

ڈوکر ایپلی کیشنز کی تیاری، فراہمی اور آپریٹنگ کے لیے ایک کھلا پلیٹ فارم ہے۔ ڈوکر آپ کی ایپلی کیشنز کو تیزی سے ڈیلیور کرنے کے لیے ڈیزائن کیا گیا ہے۔ ڈوکر کے ساتھ، آپ اپنی ایپلیکیشن کو اپنے انفراسٹرکچر سے ڈیکپل کر سکتے ہیں اور انفراسٹرکچر کو ایک منظم ایپلی کیشن کے طور پر دیکھ سکتے ہیں۔ Docker آپ کو اپنے کوڈ کو تیزی سے بھیجنے، تیزی سے ٹیسٹ کرنے، ایپلیکیشنز کو تیزی سے بھیجنے، اور کوڈ لکھنے اور چلانے کے کوڈ کے درمیان وقت کو کم کرنے میں مدد کرتا ہے۔ Docker یہ کام ہلکے وزن والے کنٹینر ورچوئلائزیشن پلیٹ فارم کے ذریعے کرتا ہے، اس عمل اور افادیت کا استعمال کرتے ہوئے جو آپ کو اپنی ایپلی کیشنز کو منظم اور میزبانی کرنے میں مدد کرتا ہے۔

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

کنٹینر ورچوئلائزیشن پلیٹ فارم اور ٹولز درج ذیل صورتوں میں کارآمد ہو سکتے ہیں:

  • ڈوکر کنٹینرز میں اپنی ایپلیکیشن (اور وہ اجزاء جو آپ استعمال کرتے ہیں) پیک کرنا؛
  • ترقی اور جانچ کے لیے آپ کی ٹیموں کو ان کنٹینرز کی تقسیم اور ترسیل؛
  • ان کنٹینرز کو اپنی پروڈکشن سائٹس پر، ڈیٹا سینٹرز اور کلاؤڈز دونوں میں رکھنا۔

میں ڈوکر کس کے لیے استعمال کر سکتا ہوں؟

اپنی درخواستیں جلدی سے شائع کریں۔

ڈوکر ڈویلپمنٹ سائیکل کو منظم کرنے کے لئے بہت اچھا ہے۔ ڈوکر ڈویلپرز کو ایپلی کیشنز اور خدمات کے ساتھ مقامی کنٹینرز چلانے کی اجازت دیتا ہے۔ جو بعد میں آپ کو مسلسل انضمام اور تعیناتی ورک فلو کے عمل کے ساتھ ضم کرنے کی اجازت دیتا ہے۔

مثال کے طور پر، آپ کے ڈویلپر مقامی طور پر کوڈ لکھتے ہیں اور اپنے ڈیولپمنٹ اسٹیک (ڈوکر امیجز کا ایک سیٹ) ساتھیوں کے ساتھ شیئر کرتے ہیں۔ جب وہ تیار ہوتے ہیں، تو وہ کوڈ اور کنٹینرز کو ٹیسٹ سائٹ پر لے جاتے ہیں اور کوئی ضروری ٹیسٹ چلاتے ہیں۔ ٹیسٹ سائٹ سے، وہ کوڈ اور تصاویر کو پروڈکشن میں بھیج سکتے ہیں۔

آسانی سے بچھانے اور کھولنا

ڈوکر کنٹینر پر مبنی پلیٹ فارم آپ کے پے لوڈ کو پورٹ کرنا آسان بناتا ہے۔ ڈوکر کنٹینرز آپ کی مقامی مشین پر چل سکتے ہیں، یا تو اصلی یا ورچوئل مشین پر ڈیٹا سینٹر میں، یا کلاؤڈ میں۔

ڈاکر کی پورٹیبلٹی اور ہلکی پھلکی نوعیت آپ کے کام کے بوجھ کو متحرک طور پر منظم کرنا آسان بناتی ہے۔ آپ اپنی ایپلیکیشن یا خدمات کو تعینات یا بند کرنے کے لیے docker کا استعمال کر سکتے ہیں۔ ڈوکر کی رفتار اسے قریب قریب حقیقی وقت میں کرنے کی اجازت دیتی ہے۔

زیادہ بوجھ اور زیادہ پے لوڈ

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

مین ڈوکر اجزاء

ڈاکر دو اہم اجزاء پر مشتمل ہے:

  • ڈوکر: ایک اوپن سورس ورچوئلائزیشن پلیٹ فارم؛
  • Docker Hub: Docker کنٹینرز کی تقسیم اور انتظام کے لیے ہمارا پلیٹ فارم بطور خدمت۔

نوٹ! ڈوکر کو اپاچی 2.0 لائسنس کے تحت تقسیم کیا گیا ہے۔

ڈوکر فن تعمیر

ڈوکر کلائنٹ سرور فن تعمیر کا استعمال کرتا ہے۔ ڈوکر کلائنٹ ڈوکر ڈیمون کے ساتھ بات چیت کرتا ہے، جو آپ کے کنٹینرز کو بنانے، چلانے اور تقسیم کرنے کا بوجھ اٹھاتا ہے۔ کلائنٹ اور سرور دونوں ایک ہی سسٹم پر چل سکتے ہیں، آپ کلائنٹ کو ریموٹ ڈوکر ڈیمون سے جوڑ سکتے ہیں۔ کلائنٹ اور سرور ساکٹ یا RESTful API کے ذریعے بات چیت کرتے ہیں۔

ڈوکر کو سمجھنا

ڈوکر ڈیمون

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

ڈاکر کلائنٹ

ڈوکر کلائنٹ، ڈوکر پروگرام، ڈوکر کا مرکزی انٹرفیس ہے۔ یہ صارف سے کمانڈ وصول کرتا ہے اور ڈوکر ڈیمون کے ساتھ بات چیت کرتا ہے۔

ڈوکر کے اندر

یہ سمجھنے کے لیے کہ ڈوکر کس چیز پر مشتمل ہے، آپ کو تین اجزاء کے بارے میں جاننے کی ضرورت ہے:

  • تصاویر
  • رجسٹری
  • کنٹینرز

تصاویر

ڈوکر امیج صرف پڑھنے کے لیے ٹیمپلیٹ ہے۔ مثال کے طور پر، تصویر میں اپاچی کے ساتھ Ubuntu آپریٹنگ سسٹم اور اس پر ایک ایپلیکیشن ہو سکتی ہے۔ کنٹینرز بنانے کے لیے تصاویر کا استعمال کیا جاتا ہے۔ Docker نئی تصاویر بنانا، موجودہ تصاویر کو اپ ڈیٹ کرنا، یا آپ دوسرے لوگوں کی تخلیق کردہ تصاویر ڈاؤن لوڈ کر سکتے ہیں۔ امیجز ڈوکر بلڈ کے اجزاء ہیں۔

رجسٹری

ڈاکر رجسٹری تصاویر کو اسٹور کرتی ہے۔ یہاں سرکاری اور نجی رجسٹریاں ہیں جہاں سے آپ تصاویر ڈاؤن لوڈ یا اپ لوڈ کر سکتے ہیں۔ ایک عوامی ڈاکر رجسٹری ہے۔ ڈوکر حب. وہاں تصاویر کا ایک بہت بڑا ذخیرہ محفوظ ہے۔ جیسا کہ آپ جانتے ہیں، تصاویر آپ کے ذریعے بنائی جا سکتی ہیں یا آپ دوسروں کی تخلیق کردہ تصاویر کو استعمال کر سکتے ہیں۔ رجسٹریاں تقسیم کا ایک جزو ہیں۔

کنٹینرز

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

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

اب تک ہم جانتے ہیں کہ:

  • ہم ایسی تصاویر بنا سکتے ہیں جن میں ہماری ایپلی کیشنز موجود ہیں؛
  • ہم ایپلی کیشنز کو چلانے کے لیے تصاویر سے کنٹینرز بنا سکتے ہیں۔
  • ہم تصاویر کو Docker Hub یا کسی اور تصویری رجسٹری کے ذریعے تقسیم کر سکتے ہیں۔

آئیے دیکھتے ہیں کہ یہ اجزاء کیسے ملتے ہیں۔

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

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

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

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

نوٹ! Docker عام طور پر Docker Hub رجسٹری سے تصاویر کھینچتا ہے۔

ان بیس امیجز سے ڈوکر امیجز بنائی جا سکتی ہیں؛ ہم ان تصاویر کو بنانے کے لیے ہدایات کو کہتے ہیں۔ ہر ہدایت ایک نئی تصویر یا سطح بناتی ہے۔ ہدایات درج ذیل ہوں گی۔

  • کمانڈ چلائیں
  • فائل یا ڈائریکٹری شامل کرنا
  • ایک ماحولیاتی تغیر پیدا کرنا
  • اس تصویر کا کنٹینر لانچ ہونے پر کیا چلنا ہے اس بارے میں ہدایات

یہ ہدایات ایک فائل میں محفوظ ہیں۔ Dockerfile. ڈوکر یہ پڑھتا ہے۔ Dockerfile، جب آپ تصویر بناتے ہیں، تو ان ہدایات پر عمل کرتا ہے اور حتمی تصویر واپس کرتا ہے۔

ڈاکر رجسٹری کیسے کام کرتی ہے؟

رجسٹری ڈاکر امیجز کے لیے ایک ذخیرہ ہے۔ ایک بار تصویر بن جانے کے بعد، آپ اسے عوامی Docker Hub رجسٹری یا اپنی ذاتی رجسٹری میں شائع کر سکتے ہیں۔

ڈوکر کلائنٹ کے ساتھ، آپ پہلے سے شائع شدہ تصاویر کو تلاش کر سکتے ہیں اور کنٹینرز بنانے کے لیے انہیں اپنی ڈوکر مشین میں ڈاؤن لوڈ کر سکتے ہیں۔

Docker Hub عوامی اور نجی تصویری ذخیرہ فراہم کرتا ہے۔ عوامی ذخیروں سے تصاویر تلاش کرنا اور ڈاؤن لوڈ کرنا ہر ایک کے لیے دستیاب ہے۔ تلاش کے نتائج میں نجی اسٹوریج کے مواد شامل نہیں ہیں۔ اور صرف آپ اور آپ کے صارفین ہی یہ تصاویر وصول کر سکتے ہیں اور ان سے کنٹینرز بنا سکتے ہیں۔

کنٹینر کیسے کام کرتا ہے؟

ایک کنٹینر آپریٹنگ سسٹم، صارف کی فائلیں اور میٹا ڈیٹا پر مشتمل ہوتا ہے۔ جیسا کہ ہم جانتے ہیں، ہر کنٹینر ایک تصویر سے بنایا گیا ہے۔ یہ تصویر ڈوکر کو بتاتی ہے کہ کنٹینر میں کیا ہے، کون سا عمل شروع کرنا ہے، کنٹینر کب شروع ہوتا ہے، اور دیگر کنفیگریشن ڈیٹا۔ ڈوکر امیج صرف پڑھنے کے لیے ہے۔ جب ڈوکر ایک کنٹینر شروع کرتا ہے، تو یہ تصویر کے اوپر ایک پڑھنے/لکھنے کی پرت بناتا ہے (یونین فائل سسٹم کا استعمال کرتے ہوئے جیسا کہ پہلے بتایا گیا ہے) جس میں ایپلیکیشن چلائی جا سکتی ہے۔

جب کنٹینر شروع ہوتا ہے تو کیا ہوتا ہے؟

یا پروگرام کا استعمال کرتے ہوئے docker، یا RESTful API کا استعمال کرتے ہوئے، docker کلائنٹ ڈوکر ڈیمون کو کنٹینر شروع کرنے کو کہتا ہے۔

$ sudo docker run -i -t ubuntu /bin/bash

آئیے اس حکم پر ایک نظر ڈالیں۔ کلائنٹ کو کمانڈ کا استعمال کرتے ہوئے لانچ کیا جاتا ہے۔ docker، آپشن کے ساتھ run، جس کا کہنا ہے کہ ایک نیا کنٹینر لانچ کیا جائے گا۔ کنٹینر چلانے کے لیے کم از کم تقاضے درج ذیل صفات ہیں:

  • کنٹینر بنانے کے لیے کون سی تصویر استعمال کرنی ہے۔ ہمارے معاملے میں ubuntu
  • وہ کمانڈ جسے آپ کنٹینر شروع ہونے پر چلانا چاہتے ہیں۔ ہمارے معاملے میں /bin/bash

جب ہم اس کمانڈ کو چلاتے ہیں تو ہڈ کے نیچے کیا ہوتا ہے؟

ڈوکر، ترتیب میں، مندرجہ ذیل کرتا ہے:

  • اوبنٹو امیج ڈاؤن لوڈ کرتا ہے: ڈاکر تصویر کی دستیابی کی جانچ کرتا ہے۔ ubuntu مقامی مشین پر، اور اگر یہ وہاں نہیں ہے، تو اسے یہاں سے ڈاؤن لوڈ کریں۔ ڈوکر حب. اگر کوئی تصویر ہے، تو وہ اسے کنٹینر بنانے کے لیے استعمال کرتی ہے۔
  • ایک کنٹینر بناتا ہے: جب تصویر موصول ہوتی ہے، ڈاکر اسے کنٹینر بنانے کے لیے استعمال کرتا ہے۔
  • فائل سسٹم کو شروع کرتا ہے اور صرف پڑھنے کی سطح کو ماؤنٹ کرتا ہے: کنٹینر فائل سسٹم میں بنایا جاتا ہے اور تصویر کو صرف پڑھنے کے لیول میں شامل کیا جاتا ہے۔
  • نیٹ ورک/پل کو شروع کرتا ہے: ایک نیٹ ورک انٹرفیس بناتا ہے جو ڈوکر کو میزبان مشین کے ساتھ بات چیت کرنے کی اجازت دیتا ہے۔
  • IP ایڈریس کی ترتیب: پتہ ڈھونڈتا ہے اور سیٹ کرتا ہے؛
  • مخصوص عمل شروع کرتا ہے: آپ کی درخواست شروع کرتا ہے؛
  • آپ کی درخواست سے پروسیس اور آؤٹ پٹ تیار کرتا ہے: آپ کی ایپلیکیشن کے معیاری ان پٹ، آؤٹ پٹ، اور ایرر اسٹریم کو جوڑتا اور لاگ کرتا ہے تاکہ آپ ٹریک کر سکیں کہ آپ کی ایپلیکیشن کیسی کارکردگی دکھا رہی ہے۔

اب آپ کے پاس کام کرنے والا کنٹینر ہے۔ آپ اپنے کنٹینر کا نظم کر سکتے ہیں، اپنی درخواست کے ساتھ تعامل کر سکتے ہیں۔ جب آپ درخواست کو روکنے کا فیصلہ کرتے ہیں، تو کنٹینر کو حذف کریں۔

ٹیکنالوجیز استعمال کی گئیں

ڈوکر گو میں لکھا گیا ہے اور مندرجہ بالا فعالیت کو نافذ کرنے کے لیے لینکس کرنل کی کچھ خصوصیات استعمال کرتا ہے۔

نام کی جگہیں

ڈوکر ٹیکنالوجی کا استعمال کرتا ہے۔ namespaces الگ تھلگ کام کی جگہوں کو منظم کرنے کے لیے، جسے ہم کنٹینرز کہتے ہیں۔ جب ہم ایک کنٹینر شروع کرتے ہیں، تو ڈوکر اس کنٹینر کے لیے نام کی جگہوں کا ایک سیٹ بناتا ہے۔

یہ ایک الگ تھلگ پرت بناتا ہے، جس میں کنٹینر کا ہر پہلو اپنے نام کی جگہ پر چلتا ہے اور بیرونی نظام تک رسائی نہیں رکھتا ہے۔

کچھ نام کی جگہوں کی فہرست جو ڈاکر استعمال کرتا ہے:

  • pid: عمل کو الگ تھلگ کرنا؛
  • نیٹ: نیٹ ورک انٹرفیس کے انتظام کے لیے؛
  • آئی پی سی: آئی پی سی وسائل کا انتظام کرنے کے لیے۔ (ICP: InterProccess Communication)؛
  • mnt: ماؤنٹ پوائنٹس کا انتظام کرنے کے لئے؛
  • utc: کرنل اور کنٹرول ورژن جنریشن کو الگ کرنے کے لیے (UTC: یونکس ٹائم شیئرنگ سسٹم)۔

کنٹرول گروپس

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

یونین فائل سسٹم

یونین فائل سسٹم یا یونین ایف ایس ایک فائل سسٹم ہے جو پرتیں بنا کر کام کرتا ہے، اسے بہت ہلکا اور تیز بناتا ہے۔ ڈوکر یونین ایف ایس کو بلاکس بنانے کے لیے استعمال کرتا ہے جہاں سے کنٹینر بنایا گیا ہے۔ ڈوکر یونین ایف ایس کی متعدد قسمیں استعمال کرسکتا ہے بشمول: AUFS، btrfs، vfs اور DeviceMapper۔

کنٹینر فارمیٹس

ڈوکر ان اجزاء کو ایک ریپر میں جوڑتا ہے جسے ہم کنٹینر فارمیٹ کہتے ہیں۔ ڈیفالٹ فارمیٹ کہا جاتا ہے۔ libcontainer. ڈوکر لینکس کے استعمال سے روایتی کنٹینر فارمیٹ کی بھی حمایت کرتا ہے۔ ایل ایکس سی. مستقبل میں، Docker دوسرے کنٹینر فارمیٹس کو سپورٹ کر سکتا ہے۔ مثال کے طور پر، BSD جیلوں یا سولاریس زونز کے ساتھ انضمام۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں