JavaRush /جاوا بلاگ /Random-UR /ڈوکر سے پہلی واقفیت
Viacheslav
سطح

ڈوکر سے پہلی واقفیت

گروپ میں شائع ہوا۔
کنٹینرائزیشن ایک طریقہ کار ہے جو اکثر عملی طور پر استعمال ہوتا ہے۔ مثال کے طور پر، جب آپ ہیڈ ہنٹر پر تلاش کرتے ہیں، تو آپ کو آج تک 477 آسامیاں ملیں گی جن میں Docker کا ذکر ہے۔ لہذا، یہ کیا ہے کے ساتھ اپنے آپ کو واقف کرنے کے لئے برا خیال نہیں ہو گا. مجھے امید ہے کہ یہ مختصر جائزہ پہلا خیال بنانے میں مدد کرے گا۔ ٹھیک ہے، وہ اسے اضافی مواد کے ساتھ بیک اپ کرے گا، جیسے Udemy کے کورسز۔ ڈوکر کا پہلا تعارف - 1

تعارف

اس مختصر جائزے میں میں کنٹینرائزیشن جیسے موضوع پر بات کرنا چاہوں گا۔ اور آپ کو یہ سمجھنے کی ضرورت ہے کہ کنٹینرائزیشن دراصل کیا ہے۔ ویکیپیڈیا کے مطابق، " کنٹینرائزیشن " آپریٹنگ سسٹم لیول (یعنی ہارڈ ویئر نہیں ) ورچوئلائزیشن ہے جس میں آپریٹنگ سسٹم کا کرنل صرف ایک کے بجائے متعدد الگ تھلگ یوزر اسپیس مثالوں کو برقرار رکھتا ہے۔ " یوزر اسپیس " آپریٹنگ سسٹم کی ورچوئل میموری ایڈریس اسپیس ہے جو صارف کے پروگراموں کے لیے مخصوص ہے۔ صارف کی جگہ کی مثالیں (عام طور پر کنٹینرز کہلاتی ہیں) صارف کے نقطہ نظر سے ایک ہی آپریٹنگ سسٹم مثال سے مکمل طور پر ایک جیسی ہیں۔ دانا کنٹینر کی مکمل تنہائی کو یقینی بناتا ہے، لہذا مختلف کنٹینرز کے پروگرام ایک دوسرے کو متاثر نہیں کر سکتے۔ اس سے پتہ چلتا ہے کہ کنٹینرائزیشن سافٹ ویئر ورچوئلائزیشن ہے، یعنی آپریٹنگ سسٹم کی سطح پر ورچوئلائزیشن، جس کے لیے آپریٹنگ سسٹم کا کرنل ذمہ دار ہے۔ اس نقطہ نظر کی ایک خصوصیت یہ ہے کہ تمام کنٹینرز ایک مشترکہ دانا استعمال کرتے ہیں، جیسا کہ میزبان آپریٹنگ سسٹم (یعنی وہ جس پر کنٹینرز موجود ہیں)۔ یہ آپ کو ورچوئل ہارڈویئر کی تقلید اور آپریٹنگ سسٹم کی ایک مکمل مثال شروع کرنے کے اوور ہیڈ سے چھٹکارا حاصل کرنے کی اجازت دیتا ہے۔ ہم کہہ سکتے ہیں کہ یہ "ہلکا پھلکا" ورچوئلائزیشن ہے۔ کرنل OS کا مرکزی حصہ ہے جو ایپلی کیشنز کو کمپیوٹر کے وسائل، جیسے پروسیسر ٹائم، میموری، بیرونی ہارڈ ویئر، اور بیرونی ان پٹ اور آؤٹ پٹ آلات تک مربوط رسائی فراہم کرتا ہے۔ دانا عام طور پر فائل سسٹم اور نیٹ ورک پروٹوکول خدمات بھی فراہم کرتا ہے۔ عام طور پر، یہ پورے نظام کا دل ہے. اضافی معلومات کے لیے، مواد کا جائزہ لینا مفید ہو سکتا ہے " کنٹینرز کے بارے میں عمومی معلومات "۔ اور تعارف مکمل کرنے کے لیے چند مزید الفاظ۔ ہمیں اب یہ سمجھ آ گئی ہے کہ آپریٹنگ سسٹم میں دانا ہوتا ہے۔ یہ صارف کی جگہ کی مثالوں کے لیے تنہائی فراہم کرتا ہے۔ اس تناظر میں، آپ کو " cgroups " کی اصطلاح مل سکتی ہے ۔ یہ لینکس کے کرنل میکانزم کا نام ہے جو آپ کو یہ حاصل کرنے کی اجازت دیتا ہے۔ لہذا، ہم کہہ سکتے ہیں کہ کنٹینرائزیشن کا راستہ لینکس سسٹم کے ساتھ شروع ہوا. تاہم، ونڈوز 10 کے ساتھ شروع کرتے ہوئے، کنٹینرائزیشن کے لیے سپورٹ بھی ظاہر ہوا۔ ورچوئلائزیشن کے ساتھ کام کرنے کے لیے، آپ کو اپنے کمپیوٹر کے BIOS میں ورچوئلائزیشن سپورٹ کو کنفیگر کرنے کی ضرورت ہے۔ یہ کیسے کرنا ہے اس کا انحصار کمپیوٹر پر ہے۔ مثال کے طور پر، یہ اس طرح نظر آسکتا ہے:
ڈوکر کا پہلا تعارف - 2
ونڈوز پر آپ اسے مختلف طریقوں سے چیک کر سکتے ہیں۔ مثال کے طور پر، آپ Microsoft کی ویب سائٹ سے ایک خصوصی یوٹیلیٹی ڈاؤن لوڈ کر سکتے ہیں: Hardware-assisted Virtualization Detection Tool ۔ ٹھیک ہے، یہ ایک اور اہم تصور کا ذکر کرنے کے قابل ہے - Hypervisor. ہائپر وائزر ایک ورچوئل مشین مانیٹر ہے، ایک ہی کمپیوٹر پر متعدد آپریٹنگ سسٹمز کے متوازی عمل کو یقینی بنانے کے لیے ایک پروگرام۔ ہائپر وائزر اس بات کو یقینی بناتا ہے کہ آپریٹنگ سسٹم ایک دوسرے سے الگ تھلگ ہیں اور چلانے والے OS کے درمیان وسائل کا اشتراک کرتے ہیں۔ ایسا ہی ایک ہائپر وائزر Oracle VirtualBox ہے ۔
ڈوکر کا پہلا تعارف - 3

ڈوکر

لہذا، ورچوئلائزیشن کیا ہے واضح ہے. لیکن اس کا استعمال کیسے کریں؟ اور یہاں ڈوکر ہماری مدد کو آتا ہے۔ ڈوکر کنٹینرائزڈ ماحول میں ایپلی کیشنز کی تعیناتی اور انتظام کو خودکار کرنے کا سافٹ ویئر ہے۔ یہ اس حقیقت کے ساتھ شروع کرنے کے قابل ہے کہ Docker کی نمائندگی Docker Enginge جیسے تصور سے کی جاتی ہے۔ اور آپ کو آفیشل ڈوکر ویب سائٹ اور " ڈوکر اوور ویو " سیکشن سے شروع کرنا چاہیے۔
ڈوکر کا پہلا تعارف - 4
دستاویزات کا کہنا ہے کہ ڈاکر پر مشتمل ہے:
  • Docker سرور کو Docker Daemon process (dockerd) کہا جاتا ہے۔
  • کمانڈ لائن انٹرفیس، جسے CLI (docker) بھی کہا جاتا ہے۔
  • ایک REST API جو یہ بتاتا ہے کہ پروگرام کس طرح ڈیمن سے "بات" کر سکتے ہیں اور اسے بتا سکتے ہیں کہ کیا کرنا ہے۔
اس سے پہلے کہ ہم مزید غوطہ لگائیں، آئیے ڈوکر انسٹال کریں، یعنی ڈوکر ڈیمون انسٹال کریں۔ ڈوکر ویب سائٹ پر " ڈوکر فار ونڈوز " کو انسٹال کرنے کی ہدایات ہیں۔ دلچسپ بات یہ ہے کہ ڈوکر کی اپنی سسٹم کی ضروریات ہیں۔ اور اگر آپ کے پاس، میری طرح، پرانی ونڈوز ہے، مثال کے طور پر ونڈوز 7، تو آپ کو Docker Toolbox استعمال کرنے کی ضرورت ہے۔
ڈوکر کا پہلا تعارف - 5

ڈوکر ٹول باکس

پرانی مشینوں پر ڈوکر انسٹال کرنا جو سسٹم کی ضروریات کو پورا نہیں کرتی ہیں۔ ویب سائٹ ایسا کہتی ہے، "لیگیسی ڈیسک ٹاپ حل"۔ آئیے " ڈوکر ٹول باکس " کے صفحے پر جائیں اور اسے ڈاؤن لوڈ کریں۔ اس سیٹ کا وزن تقریباً 211 میگا بائٹس ہے۔ ہم اسے ڈیفالٹ کے طور پر انسٹال کریں گے، یعنی ہم جھنڈوں کو دوبارہ ترتیب دیئے بغیر ہر چیز سے نرمی سے اتفاق کریں گے۔ تنصیب کے بعد، ہم چیک کریں گے کہ سب کچھ ٹھیک ہے. مستقبل میں ہماری جنگ کا میدان کمانڈ لائن ہو گا۔ میں ونڈوز کمانڈ لائن کو استعمال نہ کرنے کی تجویز کرتا ہوں، کیونکہ اس کے ساتھ غیر واضح مسائل ہو سکتے ہیں۔ باش شیل استعمال کرنا بہتر ہے۔ ونڈوز پر، اسے حاصل کرنے کا سب سے تجویز کردہ طریقہ گٹ ورژن کنٹرول سسٹم کو انسٹال کرنا ہے ، یہ اب بھی کام آئے گا۔ کیونکہ اس کے ساتھ "بنڈل" وہ بیش ہوگا جس کی ہمیں ضرورت ہے۔ اس جائزے کے لیے میں git bash استعمال کروں گا۔ آپ CYGWIN کے ساتھ bash بھی انسٹال کر سکتے ہیں ۔ چلو bash یا git bash لانچ کرتے ہیں۔ آئیے اس بات کو یقینی بنائیں کہ ہم نے ڈوکر مشین انسٹال کر لی ہے، جسے ڈوکر مشین بھی کہا جاتا ہے: docker-machine -version یہ ڈوکر مشین کیا ہے؟ ڈوکر مشین ڈوکرائزڈ ہوسٹس کے انتظام کے لیے ایک افادیت ہے (یہ وہ میزبان ہیں جن پر ڈوکر انجن انسٹال ہوتا ہے)۔ اگر ہم کمانڈ کا استعمال کرتے ہوئے Docket Toolbox view docker مشینوں کو انسٹال کرنے کے فوراً بعد docker-machine ls، ہمیں ایک خالی فہرست نظر آئے گی:
ڈوکر کا پہلا تعارف - 6
آئیے ایک نئی مشین بنائیں۔ ایسا کرنے کے لئے، ہمیں تخلیق کمانڈ کو چلانے کی ضرورت ہے : docker-machine create -- driver virtualbox javarush: ہم ڈوکر مشین تخلیق لاگ دیکھیں گے:
ڈوکر کا پہلا تعارف - 7
ہمیں یہاں کیا دلچسپی ہے وہ درج ذیل ہے۔ Boot2Docker کیا ہے؟ یہ ڈوکر انجن چلانے کے لیے لینکس کی ایک معمولی تقسیم ہے (ہم سمجھتے ہیں کہ ڈوکر لینکس ورچوئلائزیشن ٹولز کی بدولت کام کرتا ہے، اور ونڈوز میں ضروری میکانزم صرف ونڈوز 10 سے شروع ہوتا ہے)۔ یہ تقسیم " Tiny Core Linux " کی تقسیم پر مبنی ہے۔ ورچوئل باکس VM کے بارے میں بھی ذکر کیا۔ اس کی وجہ یہ ہے کہ ہم نے وضاحت کی ہے --driver virtualbox۔ Boot2Docker امیج سے ورچوئل باکس میں ایک نئی ورچوئل مشین بنائی گئی۔ تخلیق کے بعد، ہم ورچوئل باکس لانچ کر سکتے ہیں (چونکہ ورچوئل باکس ڈوکر ٹول باکس کے ساتھ انسٹال ہے) اور ڈوکر مشین کے لیے بنائی گئی ورچوئل مشین دیکھ سکتے ہیں:
ڈوکر کا پہلا تعارف - 8
تخلیق کے بعد، ہمیں ماحول کے متغیرات حاصل کرنے کے لیے " docker-machine env " کمانڈ چلانے کے لیے کہا جائے گا جن کو ڈوکر مشین سے منسلک کرنے کے لیے ترتیب دینے کی ضرورت ہے:
ڈوکر کا پہلا تعارف - 9
ڈوکر مشین کا استعمال کرتے ہوئے اس کمانڈ پر عمل کرنے کے بعد، ہم ایک ریموٹ ڈوکرائزڈ ہوسٹ (اس معاملے میں، ورچوئل باکس پر ہوسٹ کردہ ایک ورچوئل) سے جڑ جاتے ہیں اور ڈوکر کمانڈز کو مقامی طور پر اس طرح چلا سکتے ہیں جیسے ہم ان کو ریموٹ ہوسٹ پر چلا رہے ہوں۔ چیک کرنے کے لیے، ہم " docker info " کمانڈ چلا سکتے ہیں۔ اگر ڈوکر مشین سے کنکشن قائم نہیں ہوا ہے، تو ہمیں ایک غلطی موصول ہوگی۔ اور اگر سب ٹھیک ہے تو، ڈوکر مشین پر ڈاکر کے بارے میں معلومات۔ اب یہ سمجھنے کا وقت ہے کہ ڈوکر عام طور پر کیسے کام کرتا ہے اور اسے کیسے استعمال کیا جائے۔
ڈوکر کا پہلا تعارف - 10

ڈوکر کنٹینرز

تو ہمارے پاس ڈاکر ہے۔ یہ ڈاکر ویسے بھی کیا ہے؟ ڈوکر دستاویزات اور " شروع کریں " سیکشن اس کو سمجھنے میں ہماری مدد کرے گا ۔ اس سیکشن کا تعارفی حصہ Docker Concepts کو متعارف کراتا ہے ۔ اس میں کہا گیا ہے کہ ڈوکر کنٹینرز میں ایپلی کیشنز کو تیار کرنے، ڈیبگ کرنے اور چلانے کا ایک پلیٹ فارم ہے۔ لہذا، Docker کے لئے اہم چیز کنٹینرز ہے. یہاں تک کہ اگر آپ ڈوکر لوگو کو دیکھیں تو یہ وہیل ہے جو اپنی پیٹھ پر کنٹینرز رکھتی ہے۔ لیکن کنٹینر کیا ہے؟ اگلا " تصاویر اور کنٹینرز " سیکشن میں یہ کہتا ہے کہ کنٹینر امیج کی چلتی ہوئی مثال ہے۔ اور امیج ایک "پیکیج" ہے جس میں ایپلیکیشن (کوڈ، ماحول، لائبریری، سیٹنگز وغیرہ) کے لیے ضروری ہر چیز شامل ہے۔ اب ہم خود ہی آزماتے ہیں۔ ڈوکر ویب سائٹ کا ایک سیکشن ہے جسے " Docker سیمپل " کہا جاتا ہے جس میں " Docker for Beginners " شامل ہے۔ یہاں کی مثالیں مجھے زیادہ دلچسپ لگتی ہیں۔ لہذا، ہم اچانک الپائن لینکس سے واقف ہونا چاہتے تھے اور ہم ڈوکر کنٹینرز کا استعمال کرکے ایسا کرسکتے ہیں۔ ایک تصویر حاصل کرنے کے لیے، ہمیں اسے "کھینچنا" یا "کھینچنا" چاہیے۔ لہذا، ہم docker پل کمانڈ پر عمل کرتے ہیں :docker pull apline
ڈوکر کا پہلا تعارف - 11
جیسا کہ ہم دیکھ سکتے ہیں، ہم کہیں سے ڈاؤن لوڈ کر رہے ہیں۔ پہلے سے طے شدہ طور پر، Docker نیٹ ورک پر اپنے ذخیرے کو دیکھتا ہے https://hub.docker.com ۔ تصویر کو کامیابی سے بازیافت کرنے کے بعد، ہم docker images کمانڈ کو چلا کر دستیاب تصاویر کی فہرست چیک کر سکتے ہیں :
ڈوکر کا پہلا تعارف - 12
اب ہمارے پاس ایک اپلائن امیج ہے۔ چونکہ کنٹینر امیج کی چلتی ہوئی مثال ہے، آئیے اسی تصویر کو لانچ کرتے ہیں۔ آئیے کمانڈ کا استعمال کرتے ہوئے کنٹینر لانچ کریں docker run alpine۔ جیسا کہ ہم دیکھتے ہیں، کچھ نہیں ہوا. اگر ہم تمام فعال کنٹینرز کو ظاہر کرنے کی کمانڈ پر عمل کرتے ہیں docker ps، تو ہمیں کچھ بھی نہیں ملے گا۔ لیکن اگر ہم عمل کرتے ہیں، تو docker ps -aہم تمام کنٹینرز دیکھیں گے:
ڈوکر سے پہلی واقفیت - 13
بات یہ ہے کہ ہم نے ڈوکر کو انٹرایکٹو موڈ میں لانچ نہیں کیا۔ چنانچہ اس نے حکم بجا لایا اور رک گیا۔ ٹرمینل کھولنے کا حکم تھا۔ آئیے ایک ہی کام کرتے ہیں، لیکن انٹرایکٹو موڈ میں ( -it flag کے ساتھ ):
ڈوکر کا پہلا تعارف - 14
جیسا کہ آپ دیکھ سکتے ہیں، ایک غلطی پر قابو پانے اور اشارہ کا استعمال کرتے ہوئے، ہم کنٹینر پر پہنچ گئے اور اس میں کام کر سکتے ہیں! کنٹینر کے کام کو روکے بغیر باہر نکلنے کے لیے، آپ دبا سکتے ہیں Ctrl + p + q۔ اگر ہم ابھی چلاتے ہیں docker psتو ہمیں ایک فعال کنٹینر نظر آئے گا۔ پہلے سے چلنے والے کنٹینر میں داخل ہونے کے لیے، docker exec کمانڈ چلائیں :
ڈوکر سے پہلی واقفیت - 15
یہ سب کیسے ہوتا ہے اس کی بہترین وضاحت کے لیے میں ڈوکر کے نمونے کی تفصیل پڑھنے کی تجویز کرتا ہوں: " 1.0 اپنا پہلا کنٹینر چلانا "۔ مجھے یہ پسند ہے کیونکہ وہاں سب کچھ بہت قابل رسائی اور قابل فہم انداز میں لکھا گیا ہے۔ مختصر طور پر دوبارہ بیان کرنے کے لیے، ہم docker-machine کا استعمال کرتے ہوئے Docker Daemon چلانے والی ورچوئل مشین سے جڑے ہوئے ہیں۔ REST API پر CLI کا استعمال کرتے ہوئے، ہم الپائن امیج لانچ کرنے کو کہتے ہیں۔ ڈاکر اسے ڈھونڈتا ہے اور اس لیے اسے ڈاؤن لوڈ نہیں کرتا ہے۔ ڈوکر ایک نیا کنٹینر بناتا ہے اور اس کنٹینر میں بیان کردہ کمانڈ چلاتا ہے۔ اور یہ سب یقیناً اچھا ہے۔ لیکن ہمیں اس سب کی ضرورت کیوں ہے؟ اور یہاں ہمیں یہ جاننے کی ضرورت ہے کہ ڈوکر تصویر کیسے بناتا ہے۔ اور وہ انہیں ڈاکر فائل کی بنیاد پر تخلیق کرتا ہے۔
ڈوکر کا پہلا تعارف - 16

ڈاکر فائل

جیسا کہ Dockerfile حوالہ میں بیان کیا گیا ہے ، ایک dockerfile ایک ٹیکسٹ فائل ہے جس میں تصویر حاصل کرنے کے تمام احکامات ہوتے ہیں۔ درحقیقت، ہمیں موصول ہونے والی تمام تصاویر (یہاں تک کہ الپائن، اوپر کی مثال سے) ایک ڈاکر فائل سے بنائی گئی تھیں۔ آئیے جاوا ایپلیکیشن کے ساتھ اپنی تصویر بنائیں۔ اور پہلے ہمیں اس جاوا ایپلی کیشن کی ضرورت ہے۔ میں گریڈل بلڈ سسٹم استعمال کرنے کا مشورہ دیتا ہوں، جس کے بارے میں آپ اس مختصر جائزے میں مزید پڑھ سکتے ہیں: " گریڈل کا مختصر تعارف" Gradle Build init plugin " پروجیکٹ بنانے میں ہماری مدد کرے گا ۔ آئیے گریڈل کا استعمال کرتے ہوئے ایک نئی جاوا ایپلی کیشن بنائیں: gradle init --type java-application یہ کمانڈ ٹیمپلیٹ جاوا پروجیکٹ بناتی ہے۔ یہ ایک اسٹینڈ اپلی کیشن ہے، لیکن ہم ایک ویب ایپلیکیشن بنانا چاہیں گے۔ آئیے ایپ اور ایپ ٹیسٹ کلاسز کو ہٹاتے ہیں (وہ خود بخود Gradle Build Init Plugin کے ذریعے تیار کیے گئے تھے)۔ تیزی سے ویب ایپلیکیشن بنانے کے لیے، ہم Gradle سے ٹیوٹوریل استعمال کریں گے: “ Building Java Web Applications ”۔ ٹیوٹوریل کے مطابق، آئیے کرتے ہیں: آپ کو یہاں محتاط رہنا ہوگا۔ ہمیشہ کی طرح، مثالوں میں غلطیاں ہو سکتی ہیں۔ یہ رہا:
ڈوکر کا پہلا تعارف - 17
اب، اسے جانچنے کے لیے، آئیے گریٹی پلگ ان کو build.gradle میں شامل کریں، جیسا کہ " گریٹی پلگ ان شامل کریں اور ایپ کو چلائیں " سیکشن میں اشارہ کیا گیا ہے:
plugins {
    id 'war'
    id 'org.gretty' version '2.2.0'
}
یہ دلچسپ ہے کہ گریٹی کو اس میں غلطی نظر نہیں آتی ہے HelloServlet، جو اوپر بیان کی گئی ہے۔ اس سے ثابت ہوتا ہے کہ ایک درخواست مختلف ماحول میں مختلف طریقے سے برتاؤ کر سکتی ہے۔ گریٹی کام کر سکتا ہے جہاں ایک باقاعدہ اسٹینڈ سرور غلطی کرے گا۔ بس یہ چیک کرنا باقی ہے کہ ایپلی کیشن صحیح طریقے سے کام کر رہی ہے۔ چلو کرتے ہیں:gradle appRun
ڈوکر سے پہلی واقفیت - 18
gradle warاگر سب ٹھیک ہے، تو ایکسٹینشن وار (ویب آرکائیو) کے ساتھ آرکائیو جمع کرنے کے لیے کمانڈ استعمال کریں ۔ پہلے سے طے شدہ طور پر، گریڈل اسے میں بناتا ہے \build\libs۔ اب، ہم اپنی ڈاکر فائل لکھنے کے لیے تیار ہیں۔ " Dockerfile حوالہ " کا استعمال کرتے ہوئے ہم ایک Dockerfile بنائیں گے۔ آئیے اپنے جاوا پروجیکٹ کے روٹ میں "ڈوکر فائل" کے نام سے ایک فائل بناتے ہیں (بلڈ اسکرپٹ کی جگہ پر)۔ آئیے اسے ایڈیٹنگ کے لیے کھولیں۔ اس فائل کا اپنا فارمیٹ ہے، جسے " Dockerfile حوالہ: فارمیٹ " سیکشن میں بیان کیا گیا ہے۔ کوئی بھی ڈاکر فائل FROM بیان سے شروع ہوتی ہے، جو "بیس امیج" کی نشاندہی کرتی ہے۔ ہم کہہ سکتے ہیں کہ یہ وہ پیرنٹ امیج ہے جس کی بنیاد پر ہم اپنا امیج بناتے ہیں۔ ہمارے لیے والدین کی تصویر کا انتخاب کرنا بہت آسان ہے۔ ایک ویب ایپلیکیشن کو ویب سرور کی ضرورت ہوتی ہے۔ مثال کے طور پر، ہم Tomcat ویب سرور استعمال کر سکتے ہیں۔ ہم سرکاری ڈاکر ریپوزٹری پر جاتے ہیں، جسے docker hub کہا جاتا ہے ۔ ہم وہاں دیکھتے ہیں کہ آیا ہمیں جس تصویر کی ضرورت ہے وہ موجود ہے:
ڈوکر سے پہلی واقفیت - 19
یہ بات بھی سمجھنے کے قابل ہے کہ ٹامکیٹ امیج کو کہتے ہیں۔ لیکن نام کے علاوہ اس کا ایک ٹیگ بھی ہے۔ ایک ٹیگ ایک ورژن کی طرح ہے۔ Tomcat کے مختلف ورژن کی تصاویر میں فرق ہے کہ Tomcat کا کون سا ورژن استعمال کیا گیا ہے، jre کا کون سا ورژن اور کون سا بیس امیج ہے۔ مثال کے طور پر، ہم ایک تصویر حاصل کر سکتے ہیں docker pull tomcat:9-jre8-alpine اس میں ٹامکیٹ کا ورژن 9، jre ورژن 8 اور الپائن امیج کو بیس کے طور پر استعمال کیا گیا ہے۔ یہ ہماری تصویر کے سائز کو کم کرنے کے لیے اہم ہو سکتا ہے:
ڈوکر کا پہلا تعارف - 20
جیسا کہ ہم دیکھ سکتے ہیں، فرق بہت بڑا ہے۔ اگر ہم ٹامکاٹا الپائن کی بنیاد پر اپنی تصویر بناتے ہیں، تو ہم صرف 100 میگا بائٹس سے شروع کریں گے، نہ کہ 600 سے۔
# Базовый образ, "наследуемся" от него
FROM tomcat:9-jre8-alpine
# Копируем из Build Context'а собранный web archive в каталог томката
COPY build/libs/docker.war /usr/local/tomcat/webapps/docker.war
# Меняем рабочий каталог на томкатовский
WORKDIR /usr/local/tomcat
# Открываем порт 8080 для контейнера, т.к. его слушает томкат
EXPOSE 8080
اور اب آئیے امیج بنانے کے لیے کمانڈ پر عمل کرتے ہیں: docker build -t jrdocker ..
ڈوکر سے پہلی واقفیت - 21
-t- یہ ایک ٹیگ ہے، یعنی جمع شدہ تصویر کو کیا کہتے ہیں۔ آخر میں ڈاٹ کا مطلب ہے کہ ہم موجودہ ڈائرکٹری (وہ ڈائرکٹری جہاں dockerfile واقع ہے اور جہاں سے ہم کمانڈ چلاتے ہیں) کو Build context. Build context- یہ ان فائلوں کا سیاق و سباق ہے جو ڈاکر فائل بناتے وقت دستیاب ہوتی ہیں۔ جیسا کہ آپ دیکھ سکتے ہیں، اس کی بدولت ہم اپنی امیج میں، ویب سرور ڈائرکٹری میں جمع جنگ فائل کو کاپی کرنے میں کامیاب ہو گئے۔ اب ہم اپنی تصویر چلاتے ہیں:docker run -d --rm -p 8888:8080 jrdocker
ڈوکر سے پہلی واقفیت - 22
یہ سمجھنے کے لیے کہ آیا سرور شروع ہوا ہے، آپ کنٹینر سے لاگ کو دیکھ سکتے ہیں۔ لاگ کو docker logs کمانڈ کا استعمال کرتے ہوئے حاصل کیا جا سکتا ہے، کنٹینر کو اس کی ID یا نام سے بتاتے ہوئے۔ مثال کے طور پر:
ڈوکر سے پہلی واقفیت - 23
ٹھیک ہے، یہ نہ بھولیں کہ ہم ہمیشہ کمانڈ کے ساتھ نام کے ساتھ چلنے والے کنٹینر پر جا سکتے ہیں: winpty docker exec -it NameКонтейнера sh اب بس جوڑنا باقی ہے۔ اس سے پہلے، ہم نے EXPOSE کی وضاحت کی تھی ، یعنی ہم نے کنٹینر کے اندر سے پورٹ 8080 تک رسائی کی اجازت دی تھی۔ جب ہم نے خود کنٹینر کو لانچ کیا، تو ہم نے -p ( آنے والی بندرگاہوں ) ٹیگ کو متعین کیا، اس طرح کنٹینر پر پورٹ 8080 کو منسلک کیا گیا (Tomcat ویب سرور وہاں کنکشن کا انتظار کر رہا ہے) پورٹ 8888 کے ساتھ ڈوکر ڈیمون والی مشین پر۔ جیسا کہ ہمیں یاد ہے، ہم نے ڈوکر ڈیمون کو براہ راست نہیں بلکہ ڈوکر مشین کے ذریعے لانچ کیا۔ لہذا، ایک بار پھر ہم docker-machine ls کمانڈ کا استعمال کرتے ہوئے اپنی ڈوکر مشینوں پر ڈیٹا طلب کریں گے اور کنٹینر میں سرور سے رابطہ کریں گے:
ڈوکر کا پہلا تعارف - 24
اس طرح، آپ اور میں نے ابھی اپنی ویب ایپلیکیشن کو ایک ڈوکر کنٹینر میں لانچ کیا ہے! ) میں مندرجہ ذیل کو بھی نوٹ کرنا چاہوں گا۔ رسائی کے مسائل کی صورت میں، آپ کو یاد رکھنا چاہیے کہ Docker مشین سب سے پہلے ایک ورچوئل BOx ورچوئل مشین ہے۔ ورچوئل مشین کے نیٹ ورک سیٹنگز میں مسائل ہو سکتے ہیں۔ کام کرنے والی VMBox ترتیب اس طرح نظر آسکتی ہے:
ڈوکر سے پہلی واقفیت - 25
ڈوکر سے پہلی واقفیت - 26

تہیں

ہم پہلے ہی یہ جان چکے ہیں کہ تصاویر dockerfiles سے بنائی گئی ہیں اور dockerfiles کمانڈز کا ایک مجموعہ ہیں۔ ہم نے یہ بھی معلوم کیا کہ ڈاکر فائل کے والدین ہوتے ہیں۔ اور یہ کہ تصاویر کا سائز مختلف ہے۔ دلچسپ بات یہ ہے کہ آپ docker history کمانڈ کا استعمال کرتے ہوئے اس تصویر کی تاریخ دیکھ سکتے ہیں ۔ مثال کے طور پر:
ڈوکر سے پہلی واقفیت - 27
یہ سمجھنے کے لیے یہ کہنا ضروری ہے کہ جوہر میں، ہر تصویر تصویروں کا مجموعہ ہے۔ ہر تصویر کی تبدیلی (ڈاکر فائل میں ہر نئی کمانڈ) ایک نئی پرت بناتی ہے جس کی اپنی شناخت ہوتی ہے۔ آپ دستاویزات میں تہوں کے بارے میں مزید پڑھ سکتے ہیں " Docker: Images and Layers "۔ میں Habré پر مضمون پڑھنے کی بھی انتہائی سفارش کرتا ہوں: " تصاویر میں ڈوکر امیجز اور کنٹینرز ۔"

نتیجہ

مجھے امید ہے کہ یہ مختصر جائزہ کنٹینرائزیشن میں آپ کی دلچسپی پیدا کرنے کے لیے کافی تھا۔ ذیل میں اضافی مواد کے لنکس ہیں جو مفید ہو سکتے ہیں: #ویاچسلاو
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION