مجتمع Linux أصدرت شركة Containers الإصدار LXC 6.0، وهو مجموعة أدوات لإدارة الحاويات المعزولة. يوفر هذا الإصدار بيئة تشغيل مناسبة لتشغيل الحاويات ضمن بيئة نظام كاملة، على غرار الآلات الافتراضية، وكذلك لتشغيل الحاويات غير المميزة لتطبيقات فردية (OCI). LXC عبارة عن مجموعة أدوات منخفضة المستوى تعمل على مستوى الحاوية. ولإدارة الحاويات مركزياً، يتم تطوير نظامي Incus وLXD بالاعتماد على LXC. يُعد LXC 6.0 إصداراً مدعوماً على المدى الطويل، مع توفير تحديثات لمدة خمس سنوات (حتى عام 2029). تم تطوير LXC بلغة C ومرخص بموجب رخصة GPLv2.
تتضمن LXC مكتبة liblxc، ومجموعة من الأدوات المساعدة (lxc-create، وlxc-start، وlxc-stop، وlxc-ls، إلخ)، وقوالب لإنشاء الحاويات، ومجموعة من الروابط للغات برمجة مختلفة. ويتم تحقيق العزل باستخدام آليات النواة القياسية. Linuxتُستخدم مساحات الأسماء لعزل العمليات، ومكدس الشبكة (IPC، UTS)، ومعرّفات المستخدمين، ونقاط التحميل. وتُستخدم مجموعات التحكم (Cgroups) لتقييد الموارد. أما ميزات النواة، مثل AppArmor وملفات تعريف SE، فتُستخدم لتقليل الامتيازات وتقييد الوصول.Linuxسياسات Seccomp، و Chroots (pivot_root) والقدرات.
التغييرات الرئيسية:
- تتوفر إمكانية إنشاء ملف تنفيذي شامل لـ lxc، يجمع جميع الأوامر الموزعة سابقًا كأدوات مساعدة منفصلة "lxc-*". يُتاح خيار "tools-multicall=true" لإنشاء ملف تنفيذي موحد، وعند ضبطه، تُنشأ جميع الأدوات المساعدة المنفصلة القديمة كروابط رمزية لأداة lxc. يسمح إنشاء الملف التنفيذي الواحد بتقليل استهلاك مساحة القرص بشكل كبير، وهو أمر مهم للأنظمة المضمنة.
- تمت إضافة وظيفة set_timeout إلى مكتبة liblxc، مما يسمح لك بتعيين مهلة زمنية لأي عمليات تتفاعل مع شاشة LXC.
- يتم تمكين واجهة جسر الشبكة lxcbr0 افتراضيًا دعم IPv6 مع تخصيص العناوين من الشبكة الفرعية IPv6 ULA (عنوان محلي فريد).
- أضافت الأداة المساعدة lxc-usernsexec خياري "-u" و"-g" لتغيير معرفات المستخدم والمجموعة (UID وGID).
- تعرض أداة lxc-checkconfig الآن الإصدار فقط عندما يكون الأمر lxc-start موجودًا، وتضيف معلومات حول الحد الأقصى لعدد كل نوع من مساحات الأسماء المسموح بها.
- تمت إضافة الدعم لصور حاوية OCI التي تستخدم Squashfs لضغط البيانات.
- للتفاعل مع systemd عبر D-Bus، يتم استخدام مكتبة منفصلة libdbus-1 بدلاً من libsystemd.
- تم إيقاف دعم نظام تهيئة Upstart.
وفي الوقت نفسه، تم نشر مشروع Incus، الذي في إطاره المجتمع Linux Incus Containers هو نسخة معدلة من نظام إدارة الحاويات LXD، أنشأها الفريق الأصلي الذي أنشأ LXD. كُتب Incus بلغة Go وهو مرخص بموجب رخصة Apache 2.0. يُعد Incus 6.0 أول فرع مستقر، وسيحظى بدعم دورة إصدارات طويلة الأمد (LTS). تشمل التغييرات الرئيسية في Incus 6.0 إمكانية إنشاء واجهات شبكة عبر واجهة برمجة التطبيقات bridge.external_interfaces، ودعمًا مُحسّنًا لمصادقة JWT (رمز الويب JSON)، ودعم USB، وعرضًا تفصيليًا لمعلومات النظام عبر الأمر "incus info --resources". كما يتوفر دعم إصدار LXD 5.21 في أداة lxd-to-incus.
توفر Incus وLXD أدوات للإدارة المركزية للحاويات والأجهزة الافتراضية المنشورة على مضيف واحد وفي مجموعة من عدة مضيفات الخوادميُنفَّذ المشروع كعملية خلفية تستقبل طلبات الشبكة عبر واجهة برمجة تطبيقات REST، وتدعم أنظمة تخزين خلفية متنوعة (شجرة الدليل، ZFS، Btrfs، LVM)، ولقطات مع شرائح الحالة، والهجرة المباشرة للحاويات قيد التشغيل من جهاز إلى آخر، وتخزين صور الحاويات. يُستخدم LXC كبيئة تشغيل لإطلاق الحاويات. ويتم تحقيق العزل باستخدام آليات النواة الأصلية. Linux (مساحات الأسماء، مجموعات التحكم، Apparmor، SE)Linux(Seccomp).
مجتمع Linux أشرفت شركة Containers على تطوير LXD قبل أن تقرر Canonical تحويله إلى مشروع مؤسسي. يهدف هذا المشروع المتفرع إلى توفير بديل مستقل، مدفوع من المجتمع، لمشروع LXD الذي كانت Canonical تسيطر عليه. كما أتاح إنشاء Incus فرصة لمعالجة بعض العيوب المفاهيمية التي ظهرت أثناء تطوير LXD، والتي لم يكن من الممكن معالجتها سابقًا دون الإخلال بالتوافق مع الإصدارات السابقة.
أصدرت شركة كانونيكال إصدارًا جديدًا من نظام إدارة الحاويات LXD 5.21.1. يُشار إلى فرع LXD 5.21 باسم LTS، وسيظل مدعومًا حتى يونيو 2029. الكود الذي يُساهم به موظفو كانونيكال في LXD مُرخص بموجب ترخيص AGPLv3، ولكن الكود الذي تُقدمه جهات خارجية، والذي لا تملك كانونيكال حقوق ملكيته، يبقى مُرخصًا بموجب Apache 2.0. من بين التغييرات الوظيفية في LXD 5.21.1، تجدر الإشارة إلى نقل حزمة snap من LXD إلى فرعي LXC 6.0 وLXCFS 6.0. أُضيف امتداد storage_volumes_all ومعالج /1.0/storage_volumes المُرتبط به إلى واجهة برمجة التطبيقات لعرض قائمة بجميع وحدات التخزين. أُضيف امتداد instances_files_modify_permissions لتغيير صلاحيات الوصول إلى الملفات الموجودة عبر واجهة برمجة التطبيقات.
يتوفر الآن نظام LXCFS 6.0، وهو نظام ملفات افتراضي يُستخدم لمحاكاة نظامي /proc و/sys شبه النظامين في الحاويات، ولتوفير تمثيل افتراضي لنظام cgroupfs للتوزيعات التي لا تدعم مساحة أسماء cgroup. يضيف الإصدار الجديد خيار "--enable-cgroup" للتحكم في تفعيل الوظيفة المدمجة لإنشاء شجرة croupfs افتراضية للحاويات باستخدام cgroupv1 (تدعم معظم التوزيعات الآن مساحات أسماء croup التي توفرها النواة، لذا لم يعد تفعيل التنفيذ البديل المدمج افتراضيًا منطقيًا، وأصبح الآن اختياريًا). كما يتوقف LXCFS 6.0 عن تصفية وحدات المعالجة المركزية (CPU) عند إنشاء ملف /sys/devices/system/cpu بناءً على حالة الاتصال/عدم الاتصال.
المصدر: opennet.ru
