پائن ، الپائن لینکس OSTree پر مبنی ہے۔
کیا انتخاب کرنا۔ او ایس آپ کے سرورز پر چلنا سہولت اور واقفیت کا معاملہ ہے۔ سہولت کا مطلب ہے کہ آپ ایسی چیز چاہتے ہیں جو آپ کو کم سے کم تکلیف دے ، واقفیت کا مطلب یہ ہے کہ آپ ترجیح دیں گے۔ نہیں اگر آپ کو ضرورت نہیں ہے تو اضافی چیزیں سیکھیں۔
میرے سرور ہیں۔ پالتو جانورتو میں ٹھیک ہوں دستی طور پر ہر وقت میں ایک بار کچھ احکامات جاری کرتا ہوں ، اور مکمل آٹومیشن کی ضرورت نہیں ہے۔
کوشش کرنے کے بعد۔ CoreOS ایک سال کے لیے میں نے اپنی سادگی کی طرف رخ کیا۔ ڈسٹرو الپائن اور کی بنیاد پر شتر مرغ.
الپائن کا یہ ورژن اشارے لیتا ہے۔ فلیٹ کار اور پروجیکٹ ایٹم اور سمجھا جاتا ہے کہ یہ صرف پڑھنے والی روٹ فائل سسٹم کے طور پر انسٹال کیا جائے گا جس میں اپ ڈیٹ ایٹمی طور پر ہوتا ہے ، یعنی وہ کامیاب ہو جاتے ہیں یا سسٹم پچھلی حالت میں بدل جاتا ہے۔ اس نظام کے ممکن ہونے کے لیے ہمیشہ کم از کم ہونا ضروری ہے۔ دو سنیپ شاٹس جاری کردہ فائل سسٹم ورژن ، اسٹوریج پر دستیاب ہے۔
کس ماحول میں نظام چلے گا؟ میں نے نشانہ بنایا۔ او وی زیڈ۔ اور [KVM] ، لیکن عام طور پر آپ کہہ سکتے ہیں۔ کنٹینرز اور ورچوئل مشینیں بنیادی فرق یہ ہے کہ کنٹینرز اپنا دانا نہیں چلاتے ، خاص طور پر ان کے پاس بوٹ کا عمل نہیں ہے ، وہ براہ راست فون کرتے ہیں اس میں نظام (جو کہ مثال کے طور پر a میںDockerfile
اس کی طرف سے وضاحت کی جائے گیCMD
یاENTRYPOINT
بیانات) ، جو پراسیس کے درخت کو سنبھالنے کا ذمہ دار ہے جو کنٹینر کو چلاتا رہے گا (بالکل عام سیشن کی طرح ، اگر ابتدائی عمل ختم ہوجائے تو کنٹینر ختم ہوجاتا ہے)۔ اس کے علاوہ کنٹینرز سسٹم نوبز کو کنفیگر نہیں کر سکتے ، اور صلاحیتوں پر اضافی پابندیاں عائد کر سکتے ہیں۔
تصویر کیسے بنتی ہے؟
کیprepare.sh
اسکرپٹ انحصار کو سنبھالتا ہے ، جن میں سے بیشتر پیکیجز ہیں جیسے عام کلی ٹولز پیش کرتے ہیں۔coreutils
, util-linux
, binutils
، جیسے بلاک ڈیوائسز کے ساتھ کام کرنے کی افادیت۔blkid
, sfdisk
, multipath-tools
اور فائل سسٹم کے ساتھ۔xfsprogs
اورe2fsprogs
. کیsquashfs-tools
بلٹ روٹ فائل سسٹم کو کمپریس کرنے کے لیے آخر میں پیکیج استعمال کیا جاتا ہے۔ اے۔glib
مطابقت پیکیج بھی بطور ڈیفالٹ انسٹال ہوتا ہے کیونکہ الپائن پر مبنی ہوتا ہے۔musl
، مطابقت پیکیج کچھ لائبریریوں کو فراہم کرکے کام کرتا ہے۔
وی ایم اور کنٹینر دونوں کے لیے فائل ٹری بالترتیب بنائے گئے ہیں۔make.sh
اورmake_ovz.sh
. یہ اقدامات کی آسان وضاحت ہے۔
ورژن کو ریپوزٹری ٹیگ کے مطابق بنایا جائے۔
نئے درخت کے لیے ایک ڈائریکٹری بنائیں اور ماحول کو صاف کریں۔
بیس ٹارگٹ ڈائریکٹریز اور ڈائرکٹریز بنائیں جو آسٹری کی ضرورت ہوتی ہے ، جیسے۔sysroot
کے ساتھ ہم آہنگ کرنے کے لیے سیمل لنکس بنائیں۔ فائل سسٹم درجہ بندی کا معیار
کسٹم سروسز اور کسٹم کنفیگس کاپی کریں۔
ماؤنٹڈ سسٹم ڈائریکٹریز کے ساتھ سیٹ کروٹ۔
بیس پیکجوں کے ساتھ الپائن روٹ ایف کو بوٹسٹریپ کریں۔
روٹ ایف پر کم سے کم کنفیگریشن لگائیں جیسے اسناد ، ٹائم زون ، میزبان نام۔
کاپی کی خدمات init کے ذریعے شروع کی جائیں گی۔
مخصوص دانا امیج کے ساتھ بوٹ کنفیگریشن سیٹ اپ کریں۔
اختیاری طور پر اپنی مرضی کے مطابق دانا ماڈیولز شامل کریں۔
صفائی کرو
rootfs کا ارتکاب کریں۔[1] آسٹری کے ذخیرے کو۔
کنٹینرز کے لیے ، ترتیب ایک جیسی ہے ، لیکن ترتیب تبدیل بوٹ لوڈر آسٹری کو ماحول کی تصدیق میں مشکلات ہیں ، ہمیں کچھ لاگو کرنا ہوگا۔ حل اور کچھ ڈیوائسز سیٹ اپ کریں جنہیں عام طور پر ہینڈل کیا جاتا ہے۔ initramfs قدم اس طرح او وی زیڈ۔ یا ایل ایکس سی۔ ٹیمپلیٹس ترتیب دیئے گئے ہیں۔
ایک بار جب ہم اپنے شتر مرغ فائلوں کا درخت رکھتے ہیں۔build.sh
یاbuild-update.sh
نمونے تیار کرنے کا خیال رکھتا ہے جو تقسیم کیا جائے گا۔ سکرپٹ کے درمیان فرق یہ ہے کہ اپ ڈیٹ ورژن پچھلے آسٹری ریپوزٹری سے شروع ہوتا ہے ، اور بھی ایک ڈیلٹا آرٹفیکٹ تیار کرتا ہے جسے چلانے والا نظام اپ گریڈ کرنے کے لیے اپنی شتر مرغ پر لاگو کر سکتا ہے۔ یہ تعمیراتی مراحل کی ایک آسان وضاحت ہے۔
اگر نئی تعمیر
لوپ ڈیوائس کے طور پر لگائی گئی نئی تصویر پر نئی پارٹیشنز بنائیں۔
اور
ماؤنٹ سیسروٹ اور پچھلی تعمیر کے بوٹ پارٹیشنز۔
ماونٹڈ بلڈ پر سابقہ آسٹری تعیناتیوں (لنک فارمز) کو صاف کریں۔
ماونٹڈ بلڈ پر نیا بنایا ہوا درخت لگائیں۔
سالمیت اور چیکسم کی تصدیق کریں۔
اپ گریڈ کے لیے نیا ڈیلٹا بنائیں۔
بوٹ کنفیگریشن کو دوبارہ تخلیق کرنے کے لیے آسٹری تعیناتی پر عمل کریں۔
پرانے آسٹری کمٹس کو ہٹا دیں
بوٹ پارٹیشن سالمیت کی تصدیق کریں۔
نئی اپڈیٹ بلڈ امیج کو ان ماؤنٹ کریں۔
امیج چیکسم تیار کریں اور اسے کمپریس کریں (کے ساتھ۔squashfs
کنٹینرز کے لیے)
پارٹیشنز کنفیگریشن کا اطلاق fdisk سے ہوتا ہے۔layout.cfg
فائل جو تقسیم کے سائز کی وضاحت کرتی ہے ، ہمارے پاس rootfs کے لئے ایک تقسیم ہے (~430M
، بوٹ پارٹیشن (~40M
اور ایک تبادلہ تقسیم (~40M
). کنٹینروں کے ساتھ صرف ایک لوپ ڈیوائس پر پچھلی تعمیر کو چڑھانا چھوڑ دیں ، اور صرف پرانے (نکلے ہوئے) آسٹری ذخیرے پر نئے آسٹری کمٹ کو کھینچیں۔
میں اس تصویر میں کیا بنڈل کر رہا ہوں (انسٹال پیکجز کے علاوہ)؟
ایک چھوٹا سا لب۔functions.sh
شیل کے اندر انجام پانے والے عام کاموں کے لیے۔
KV اسٹور پر مبنی لاکنگ میکانزم کے ساتھ آسٹری بیسڈ اپ گریڈ اسکرپٹس۔
IO دونوں مقامی (iomon
) اور نیٹ ورک (tcpmon
)
کے علاوہ کنٹینر رن ٹائم کے لیے سکرپٹ سیٹ اپ کریں۔bubblewrap
: podman
, toolbox
جو پہلے ہوتا تھا اور اب نہیں ہے۔
sup
: سڑکنا آرکیسٹریشن (کنٹینرز تعینات کرنے) اور میزبان مشین کی ترتیب کے لیے استعمال کیا گیا تھا ، لیکن پھر میں نے تبدیل کر دیا جوابدہ چونکہ سپ میں طویل عرصے سے کیڑے موجود تھے جن میں اصلاح کا فقدان تھا ، میں نے شروع سے ہی جواب دہ کا انتخاب نہیں کیا کیونکہ میں نہیں چاہتا تھا کہ ہر سرور پر ازگر کا انحصار انسٹال ہو ، آخر کار میں ثانوی الپائن کے ساتھ طے ہوا chroot میزبان مشینوں پر ، میں واقع ہے۔/opt/alp
اگر میں اضافی کم تنقیدی سافٹ وئیر انسٹال کرتا۔ تاہم ، آج ، میں دوبارہ جواب دہ سے تبدیل ہو جاؤں گا۔ pyinfra ، کیونکہ
یہ بوائلر پلیٹ کے بغیر ازگر ہے (جواب دینے والا چھدم ہے۔DSL
جو اس کے حل سے زیادہ سر درد کا سبب بنتا ہے)
یہ اپنی ترکیبیں سادہ ssh کمانڈز کے ساتھ انجام دیتا ہے ، لہذا ہدف میزبانوں پر ازگر کی انحصار کی ضرورت نہیں ہے
containerpilot
: کنٹینر پائلٹ کے استعمال کا معاملہ کنٹینرز کے درمیان بغیر کسی شیل اسکرپٹ کے پیچیدہ انحصار کا انتظام کرنا ہے۔ خوش کرنے والا اور دیکھ بھال کے موڈ میں ڈال دیا گیا ، مجھے میموری کی ضروریات بھی پسند نہیں تھیں اور میموری کا استعمال اپ ٹائم کی طویل مدت تک مسلسل بڑھتا رہے گا۔ میں نے اسے سادہ شیل اسکرپٹس کے ساتھ تبدیل کیا۔ قونصل ، اگر میں شیل سکرپٹ بہت زیادہ بڑھنا شروع کروں تو میں زیادہ مناسب متبادل تلاش کر سکتا ہوں۔ جیسے بھاری حل۔ کبرنیٹس, بھیڑ یا خانہ بدوش جانے سے دور کر دیا گیا۔
beegfs
: میں ضروری دانا ماڈیول بھیجتا تھا۔ beegfs لیکن تھوڑی دیر کے بعد اس نے مطابقت کو توڑ دیا ، اور حقیقت یہ ہے کہ مناسب طریقے سے تعاون نہیں کیا گیا۔ فیوز ماڈیول کو مکمل طور پر ڈراپ کر دیا جائے ، میں فی الحال اپنے سرورز پر [DFS] نہیں چلا رہا ہوں ، لیکن نیٹ ورک میں پلگ کرنے کے لیے فائل سسٹم میں جانے کے لیے تیار ہونے کا امکان اب بھی پرکشش ہے۔
تصویر کو انسٹال کرنے کے لیے آپ یا تو اسے ہوسٹنگ فراہم کرنے والے پر اپ لوڈ کر سکتے ہیں اور ورچوئل مشینوں کی صورت میں VNC سے انسٹال کر سکتے ہیں ، لیکن میں عام طور پر ایک موجودہ تنصیب کو ہائی جیک کر لیتا ہوں ، کیونکہ یہ ہمیشہ ممکن ہوتا ہے ، جب تک میں نے ورژن کے خلاف سیٹ اپ اسکرپٹ کا تجربہ کیا ہے لینکس کی تقسیم ، عام طور پر میں ڈیبین -8 یا اوبنٹو -14 استعمال کرتا ہوں ، دوسرے کا تجربہ نہیں کیا کیونکہ میں نے ہمیشہ ان کو دستیاب پایا ہے۔ سیٹ اپ کے مراحل مندرجہ ذیل ہیں۔
ڈاؤن لوڈ کے لیے https سپورٹ کو یقینی بنائیں۔
ایک مصروف باکس ورژن ڈاؤن لوڈ کریں۔
ایک مصروف باکس لنک فارم انسٹال کریں۔
نیٹ ورک کنفیگ کے لیے ipv4/ipv6 پتے کا تعین کریں۔
chroot صلاحیتوں کو یقینی بنائیں
دیودار کی تصویر ڈاؤن لوڈ کریں اور اسے نکالیں۔
اگر VM
ٹارگٹ ڈیوائس پر فلیش کریں۔
ایک لوپ ڈیوائس پر ماؤنٹ کریں۔
پر مقامی نیٹ ورک کنفیگریشن لکھیں۔ چمکنا rootfs
اگر کنٹینر
مرکزی روٹ ماؤنٹ پوائنٹ پر init سروس (کنٹینرز کے لیے) کاپی کریں۔/sbin/init
اگر VM
معیاری کے ساتھ بائیں ڈسک کو تقسیم کریں (xfs
) تقسیم
ان ماؤنٹ
پارٹیشن سالمیت کی تصدیق کریں۔
دوبارہ شروع کریں
میں نے بنایا پائن 5 years from time of writing and I am still using it, and I see no reasons to switch to anything else. Alpine as a linux distro is great, simple, and I have never experienced breakage. I can easily deploy on NATED سرورز جو انتہائی کم وسائل پیش کرتے ہیں ، دراصل میرے پاس ایک باکس ہے جو صرف چل رہا ہے۔64M
رام ، اور اب بھی وہ تمام خصوصیات ہیں جن کی مجھے ضرورت ہے۔
[1] | جڑ فائل سسٹم |