منصوبے کے بارے میں
Unregistry ایک ہلکا پھلکا کنٹینر امیج رجسٹری ہے جو امیجز کو براہ راست ڈاکر ڈیمن کے اسٹوریج (containerd امیج اسٹور) سے محفوظ اور پیش کرتی ہے۔ اسے مشینوں کے درمیان امیجز منتقل کرتے وقت بیرونی رجسٹری کی ضرورت ختم کرنے کے لیے ڈیزائن کیا گیا ہے۔
یہ پروجیکٹ ایک ڈاکر CLI پلگ ان کمانڈ، `docker pussh` (اضافی 's' SSH کے لیے ہے)، فراہم کرتا ہے جو امیجز کو SSH کے ذریعے براہ راست ریموٹ ڈاکر سرور پر بھیجتا ہے۔ صرف وہ لیئرز منتقل کی جاتی ہیں جو ریموٹ سائیڈ پر غائب ہیں، جسے README تیز اور موثر آپریشن قرار دیتا ہے۔
README کے مطابق یہ کیسے کام کرتا ہے: کمانڈ ریموٹ سرور تک SSH ٹنل قائم کرتی ہے، وہاں ایک عارضی unregistry کنٹینر شروع کرتی ہے، ٹنل کے ذریعے ایک بے ترتیب لوکل ہوسٹ پورٹ کو unregistry پورٹ پر فارورڈ کرتی ہے، اس فارورڈڈ پورٹ کے ذریعے `docker push` کو unregistry تک چلاتی ہے (صرف وہ لیئرز منتقل کرتی ہے جو ریموٹ پر پہلے سے موجود نہیں ہیں)، پھر unregistry کنٹینر روک کر ٹنل بند کر دیتی ہے۔ منتقل شدہ امیج ریموٹ ڈاکر ڈیمن پر دستیاب ہو جاتی ہے۔ README اس طریقے کا موازنہ ڈاکر امیجز کے لیے rsync سے کرتا ہے۔
محرک: README عام متبادلات اور ان کی خامیوں کی فہرست دیتا ہے — عوامی رجسٹریاں (کوڈ کی نمائش یا ادا شدہ پرائیویٹ ریپوزٹریز)، خود میزبان رجسٹریاں (برقرار رکھنے اور محفوظ کرنے کے لیے اضافی سروس)، `docker save | ssh ... docker load` (پوری امیج منتقل کرتا ہے چاہے زیادہ تر لیئرز ریموٹ پر پہلے سے موجود ہوں)، اور ریموٹ ری بلڈز (ضائع وقت اور وسائل)۔ Unregistry اصل میں Uncloud کے لیے بنایا گیا تھا، جو متعدد ڈاکر ہوسٹس پر کنٹینرز تعینات کرنے کا ایک ٹول ہے۔
ضروریات: مقامی طور پر، پلگ ان سپورٹ والا ڈاکر CLI (ڈاکر 19.03+) اور ایک OpenSSH کلائنٹ۔ ریموٹ سرور پر، ڈاکر انسٹال اور چل رہا ہونا چاہیے، SSH صارف ڈاکر کمانڈز چلانے کے قابل ہونا چاہیے (روٹ یا ڈاکر گروپ کا صارف)، اور اگر sudo درکار ہو تو بغیر پاس ورڈ `sudo docker` ضروری ہے۔ سرور کو پہلے استعمال پر unregistry امیج کھینچنے کے لیے ghcr.io تک انٹرنیٹ رسائی کی ضرورت ہے، جب تک کہ امیج کو ایئر گیپڈ یا محدود ماحول کے لیے دستی طور پر پری لوڈ نہ کیا جائے۔ unregistry کنٹینر کو /run/containerd/containerd.sock پر containerd ساکٹ تک رسائی کی ضرورت ہے اور یہ روٹ کے طور پر چلتا ہے۔
دستاویز شدہ انسٹالیشن اختیارات: Homebrew (`brew install psviderski/tap/docker-pussh`، علاوہ ~/.docker/cli-plugins میں سم لنک)، docker-pussh اسکرپٹ کا براہ راست ڈاؤن لوڈ پلگ ان ڈائریکٹری میں، اور غیر سرکاری Debian پیکجز جو علیحدہ ریپوزٹری میں برقرار ہیں۔ ونڈوز فی الحال تعاون یافتہ نہیں ہے، حالانکہ لینکس ہدایات کے ساتھ WSL 2 تجویز کیا گیا ہے۔ انسٹالیشن کی تصدیق `docker pussh --help` سے کی جا سکتی ہے۔
ایک قابل ذکر کنفیگریشن موضوع containerd امیج اسٹور ہے۔ Unregistry امیجز کو containerd کے امیج اسٹور میں محفوظ کرتا ہے، لیکن ڈیفالٹ طور پر ڈاکر اپنی علیحدہ اسٹوریج پرت رکھتا ہے۔ ڈاکر میں containerd امیج اسٹور فعال ہونے سے، دھکیلی گئی امیجز بغیر کسی نقل کے فوری طور پر ڈاکر کے لیے دستیاب ہوتی ہیں اور pussh آپریشن تیز ہوتے ہیں۔ اس کے بغیر، pussh ریموٹ ہوسٹ پر اضافی `docker pull` چلاتا ہے، امیجز دو بار محفوظ ہوتی ہیں، اور غیر منظم containerd امیجز جمع ہو سکتی ہیں؛ README دستی صفائی کے لیے `ctr -n moby images ls` اور `ctr -n moby images rm` دکھاتا ہے۔ containerd امیج اسٹور کو فعال کرنا کلاسک اسٹوریج ڈرائیور کے ساتھ بنائی گئی امیجز اور کنٹینرز کے عارضی نقصان کا سبب بنتا ہے۔
استعمال کی مثالیں شامل ہیں: ریموٹ ہوسٹ پر دھکیلنا، `-i` کے ساتھ SSH کلیدی تصدیق، کسٹم SSH پورٹ، `-F` کے ساتھ کسٹم SSH کنفیگ فائل، ملٹی پلیٹ فارم امیجز کے لیے پلیٹ فارم منتخب کرنا (مقامی طور پر containerd امیج اسٹور کی ضرورت)، اور UNREGISTRY_IMAGE ماحولیاتی متغیر کے ذریعے unregistry امیج ورژن کو اوور رائیڈ کرنا۔ دستاویز شدہ استعمال کے معاملات پروڈکشن سرورز پر تعیناتی، CI/CD پائپ لائنز، اور ہوم لیب یا ایئر گیپڈ ماحول ہیں۔ Unregistry کو containerd ساکٹ ماؤنٹ کرکے پورٹ 5000 پر اسٹینڈ اسٹون لوکل رجسٹری کے طور پر بھی چلایا جا سکتا ہے۔
README تھرڈ پارٹی پروجیکٹس سے لنک کرتا ہے: docker-pussh کے ساتھ امیجز دھکیلنے کے لیے ایک GitHub ایکشن، پلگ ان انسٹال کرنے کے لیے ایک GitHub ایکشن، اور سیلف ہوسٹڈ رجسٹریوں میں امیجز صاف کرنے کے لیے ایک Python ٹول۔ یہ Spegel کو containerd امیج اسٹور کو رجسٹری بیک اینڈ کے طور پر استعمال کرنے کے لیے تحریک اور Docker Distribution کو unregistry کی بنیاد کے طور پر کریڈٹ دیتا ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.