منصوبے کے بارے میں

Baseimage-docker ایک Docker بیس امیج ہے جو Ubuntu پر بنائی گئی اور کنٹینرز کے اندر استعمال کے لیے ڈھالی گئی ہے۔ یہ Docker Hub اور GHCR پر `phusion/baseimage` کے نام سے شائع ہوتی ہے، اور آپ کی اپنی امیجز کے لیے نقطہ آغاز کے طور پر بنائی گئی ہے۔ یہ پروجیکٹ دلیل دیتا ہے کہ عام Ubuntu کنٹینرز کے لیے ڈیزائن نہیں کیا گیا: اس کا Upstart init حقیقی یا مجازی ہارڈویئر فرض کرتا ہے، اور کنٹینر کے بہت سے گوشے آسانی سے غلط ہو سکتے ہیں۔ Baseimage-docker وہ اصلاحات اور انتظامی اوزار ساتھ رکھتی ہے جنہیں یہ ضروری سمجھتی ہے۔ اس میں شامل ہے: - ایک درست init پروسیس، `/sbin/my_init`، جو یتیم چائلڈ پروسیسز کو ریپ کرتا ہے (زومبی جمع ہونے سے بچاتا ہے) اور SIGTERM بچوں کو بھیجتا ہے تاکہ وہ SIGKILL ہونے کے بجائے صاف بند ہو سکیں۔ - Upstart کے متبادل کے طور پر runit، جو سروس نگرانی اور کریش شدہ ڈیمونز کے خودکار ری اسٹارٹ کے لیے استعمال ہوتا ہے۔ - syslog-ng، جو صرف مقامی طور پر سنتا ہے اور پیغامات `docker logs` کو بھیجتا ہے، نیز logrotate۔ - cron، اور ایک SSH سرور جو بطور ڈیفالٹ غیر فعال ہے اور صرف کلید کی تصدیق کی اجازت دیتا ہے۔ - `setuser` جو کسی دوسرے صارف کے طور پر درست `$HOME` کے ساتھ کمانڈز چلانے کے لیے ہے، اور `install_clean` جو apt انسٹالز کے لیے ہے جو کیشے صاف کرتے ہیں۔ - Docker کے ساتھ APT کی عدم مطابقت کے لیے اصلاحات۔ استعمال: `FROM phusion/baseimage:<VERSION>` سیٹ کریں اور `CMD ["/sbin/my_init"]`۔ اضافی ڈیمونز `/etc/service/<NAME>` کے تحت قابل عمل `run` اسکرپٹس بنا کر شامل کیے جاتے ہیں؛ runit انہیں شروع کرتا ہے اور خروج پر دوبارہ شروع کرتا ہے۔ اسٹارٹ اپ اسکرپٹس `/etc/my_init.d` میں رکھے جا سکتے ہیں (لغوی ترتیب میں چلتے ہیں) یا `/etc/rc.local`، اور انہیں کوڈ 0 کے ساتھ خروج کرنا چاہیے۔ `docker run --env` یا Dockerfile `ENV` کے ذریعے بھیجے گئے ماحول متغیرات `my_init` کے ذریعے `/etc/container_environment` سے درآمد کیے جاتے ہیں، پھر شیل اور JSON فارمیٹس میں ڈمپ کیے جاتے ہیں تاکہ کسی بھی زبان میں خدمات اور اسکرپٹس اصل اقدار پڑھ سکیں۔ ڈائریکٹری بطور ڈیفالٹ root کی ملکیت ہے اور `docker_env` گروپ تک محدود ہے کیونکہ اقدار حساس ہو سکتی ہیں۔ بچوں کو ختم کرنے کے ٹائم آؤٹ `KILL_PROCESS_TIMEOUT` اور `KILL_ALL_PROCESSES_TIMEOUT` سے ایڈجسٹ کیے جا سکتے ہیں۔ README بتاتا ہے کہ امیج تقریباً 8.3 MB RAM استعمال کرتی ہے اور اپنے فریمنگ میں Busybox یا Alpine سے ہلکی ہے۔ یہ بھی وضاحت کرتا ہے کہ ایک کنٹینر میں متعدد OS پروسیسز چلانا Docker کے واحد منطقی سروس کے فلسفے سے مطابقت رکھتا ہے، اور یہ پروجیکٹ کسی بھی طریقے کو لازمی نہیں ٹھہراتا۔ Ubuntu 26.04 LTS GNU Coreutils کے بجائے Rust Coreutils بھیجتا ہے، جسے README ایک غور طلب نکتہ قرار دیتا ہے۔