حاويات اللينكس (LXC) هي تقنية محاكاة خفيفة الوزن ولديها استخدامات مختلفة. وهو جزء من نواة لينكس ، ويمكن أن يسمح لك بمضاهاة أو توزيعة لينكس متعددة على مضيف لينكس واحد. فكر في الأمر كطريق وسط بين تقنيات chroot و virtual virtualization مثل VirtualBox و KVM و Xen. تقنية مماثلة موجودة في عالم BSD هي FreeBSD Jails.
وكمثال على ذلك ، فإن الآلة التي أكتب عليها عبارة عن كمبيوتر محمول يعمل بنظام Linux Mint 18 ، مدعوم من معالج Intel Atom ، ولديه ذاكرة وصول عشوائي بحجم 2 غيغابايت. ومع ذلك ، فأنا أقوم بتشغيل ثلاث حاويات من لينكس ، كل واحدة منها مزودة بمثيل خادم الويب Apache ، دون أن تحقق نجاحًا كبيرًا في الأداء. هذا لا يمكن تصوره مع آلة افتراضية تقليدية مثل VirtualBox. لذا ، إذا كنت ترغب في تشغيل العديد من التوزيعات على نظام لينكس الخاص بك ، فيجب أن تقوم حاويات Linux بالعمل نيابة عنك على ما يرام.
تركيب وتكوين حاويات لينكس
نحن نعد LXC على لينكس منت 18 64 بت. سوف تعمل تعليمات التثبيت المتوفرة هنا أيضًا غير معدلة على Ubuntu 16.04 والإصدارات الأحدث. إذا كنت تستخدم توزيعة أخرى ، فيرجى الرجوع إلى الوثائق الرسمية للتوزيعة الخاصة بك في حالة عدم عمل شيء كما هو متوقع. يفترض أيضا الإلمام بسطر الأوامر واستكشاف الأخطاء العامة.
المتطلبات الأساسية
في ما يلي بعض الأشياء التي يجب عليك إعدادها لبدء استخدام توزيعات متعددة:
1. قم بتثبيت LXC والبرامج الأخرى المسبقة باستخدام:
[sourcecode] sudo apt install lxc lxc-templates uidmap [/ sourcecode]
2. الآن تحتاج إلى تكوين ملف التعريف الخاص بك . أدخل الأوامر التالية لإعداده:
[sourcecode] mkdir -p ~ / .config / lxc
echo "lxc.id_map = u 0 100000 65536" & amp؛ amp؛ gt؛ ~ / .config / ال إكس سي / default.conf
echo "lxc.id_map = g 0 100000 65536" & amp؛ amp؛ gt؛ & amp؛ amp؛ gt؛ ~ / .config / ال إكس سي / default.conf
echo "lxc.network.type = veth" & amp؛ amp؛ gt؛ & amp؛ amp؛ gt؛ ~ / .config / ال إكس سي / default.conf
echo "lxc.network.link = lxcbr0" & amp؛ amp؛ gt؛ & amp؛ amp؛ gt؛ ~ / .config / ال إكس سي / default.conf
صدى "$ USER veth lxcbr0 2" | sudo tee -a / etc / lxc / lxc-usernet [/ sourcecode]
3. بعد ذلك ، تحتاج إلى إعداد أذونات المستخدم على النحو التالي:
[sourcecode] sudo usermod -add-subuids 100000-165536 $ USER
sudo usermod -add-subgids 100000-165536 $ USER
سودو CGM خلق كل مستخدم
sudo cgm chown all user $ (id -u) $ (id -g)
cgm movepid all user $$ [/ sourcecode]
إعداد حاوية الخاص بك
الآن وبعد أن قمت بتثبيت LXC Container مع برامج المتطلبات المسبقة الأخرى ، إليك خطوات إعداد الحاوية:
1. في هذا المثال ، سنقوم بإعداد حاوية أوبونتو ، المسمى ubu1
. للقيام بذلك ، قم بتنفيذ الأمر التالي:
[sourcecode] lxc-create –template download –name ubu1 [/ sourcecode]
2. هنا ، –template
المعلمة –template lxc بتنزيل صورة مكونة مسبقًا من الإنترنت ، بينما تحدد المعلمة –name
اسم الحاوية - ubu1
في هذه الحالة. يمكنك استخدام أي اسم تريده.
3. سترى الآن قائمة صور التوزيعات المدعومة :
4. أدخل تفاصيل التوزيع التي ترغب في تثبيتها. سأقوم بتثبيت الإصدار 64 بت من Ubuntu 16.04 (الاسم الرمزى xenial) هنا:
5. إذا كنت ترغب في تثبيت الصورة بشكل غير تفاعلي ، فإن الأمر التالي يحقق نفس النتيجة المذكورة أعلاه:
[sourcecode] lxc-create -t download -n ubu1 - –dist ubuntu–release xenial –arch amd64 [/ sourcecode]
6. ستقوم LXC الآن بتنزيل وتثبيت الحد الأدنى من صورة أوبونتو xenial على النظام المضيف الخاص بك. قد يستغرق التنزيل والتثبيت بعض الوقت حسب اتصال الإنترنت وسرعة الكمبيوتر. بعد التثبيت ، سترى شاشة مثل هذه:
أنت الآن جاهز لاستخدام حاوية Ubuntu المعدة حديثًا.
استخدام توزيعات متعددة مع حاويات Linux
بدء تشغيل الحاوية
ابدأ الحاوية باستخدام الأمر lxc-start
:
[sourcecode] lxc-start -n ubu1 -d [/ sourcecode]
هنا ، تحدد المعلمة -n
اسم الحاوية التي تريد بدء تشغيلها ( ubu1
في هذه الحالة) ، وتقوم المعلمة -d
بتشغيلها في الخلفية .
يمكنك التحقق من بدء تشغيل الحاوية باستخدام الأمر lxc-ls
:
[sourcecode] lxc-ls -f [/ sourcecode]
تمكّن المعلمة -f
إعداد تقارير خيالية . هنا ، يمكنك أن ترى أن لديّ حاويتين - ديبيان واحد (متوقفا) وأوبونتو واحد (قيد التشغيل).
الوصول إلى واستخدام حاويتك
يمكنك الوصول إلى وحدة تحكم الحاوية باستخدام الأمر lxc-attach
:
[sourcecode] lxc-attach -n ubu1 [/ sourcecode]
سيكون لديك الآن قذيفة الجذر على الحاوية الخاصة بك. من المستحسن أن تقوم بإعداد كلمة مرور للمستخدم الأساسي ، وإنشاء حساب مستخدم عادي :
[المصدرية] باسود
adduser beebom [/ sourcecode]
بالطبع ، استبدل beebom باسم المستخدم الذي تريده. يمكنك بعد ذلك تثبيت البرنامج وتكوين حاويتك كما تفعل في النظام العادي. على سبيل المثال ، في حاوية دبيان أو أوبونتو:
[sourcecode] apt install wget openssh-server htop tmux nano iptables [/ sourcecode]
وقف الحاويات الخاصة بك
بعد الانتهاء من اللعب بالحاوية ، استخدم إما أمر exit
للعودة إلى النظام المضيف . الآن استخدم الأمر lxc-stop
لإيقاف الحاوية :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
سيؤدي هذا إلى إغلاق الحاوية بشكل نظيف ولن تستهلك أي موارد أخرى على النظام ، باستثناء مساحة القرص.
الاستنساخ واللقطات
استنساخ
بمجرد تثبيت البرامج في حاوية وتهيئتها حسب رغبتك ، قد ترغب في إنشاء نسخة واحدة أو أكثر منها لسهولة الإمداد. يمكنك القيام بذلك عن طريق إنشاء نسخة ، وهي نسخة طبق الأصل من الحاوية.
على سبيل المثال ، لإنشاء نسخة من حاوية ubu1
(دعنا نسميها ubu2
) ، قم أولاً بإيقاف تشغيل الحاوية باستخدام lxc-stop
، ثم استخدم الأمر lxc-copy
:
[sourcecode] lxc-stop -n ubu
lxc-copy -n ubu1 -N ubu2 [/ sourcecode]
هنا ، يحدد الخيار -n الحاوية المصدر ، ويحدد الخيار -N اسم الاستنساخ . للتحقق من استنساخ الحاوية ، استخدم الأمر lxc-ls
:
لقطات
لنفترض أنك على وشك جعل بعضها خطرًا أو يصعب استعادته من التغييرات في الحاوية ، مثل إعادة تهيئة خادم الويب. لتقليل الضرر ، يمكنك إنشاء لقطة للحاوية قبل إجراء هذا التغيير. في حالة حدوث خطأ أثناء التكوين ، يمكنك ببساطة إيقاف الحاوية واستعادتها إلى حالة العمل السابقة عن طريق استعادة لقطة.
لإنشاء لقطة ، قم أولاً بإيقاف تشغيل الحاوية :
[sourcecode] lxc-stop -n ubu1 [/ sourcecode]
ثم قم بإنشاء لقطة باستخدام الأمر lxc-snapshot
:
[sourcecode] lxc-snapshot -n ubu1 [/ sourcecode]
هذا يخلق لقطة تسمى snap0
. سيتم استدعاء أي لقطات لاحقة تقوم بإنشائها باستخدام هذا الأمر snap1 ، snap2 ، إلخ.
بعد ذلك ، يمكنك بدء الحاوية ، وإجراء التغييرات التي تريدها. إذا أردت العودة إلى لقطة قمت بإنشائها في أي وقت ، lxc-snapshot
أمر lxc-snapshot
مع المعلمة -r
لاستعادة لقطة :
[sourcecode] lxc-snapshot -r snap0 -n ubu1 [/ sourcecode]
سيؤدي ذلك إلى استعادة snap0
إلى حاوية ubu1
.
حاويات البدء التلقائي في التمهيد
يمكنك إنشاء حاوية ، على سبيل المثال ، حاوية خادم ويب ، البدء تلقائيًا عند تشغيل النظام. للقيام بذلك ، انتقل إلى ملف تكوين الحاوية ، الموجود في $HOME/.local/share/lxc//config
، وأضف الأسطر التالية :
[sourcecode] lxc.start.auto = 1
lxc.start.delay = 5 [/ sourcecode]
السطر الأول يحدد أن الحاوية يجب أن تبدأ عند الإقلاع. يخبر الثاني النظام بالانتظار 5 ثوانٍ قبل بدء الحاوية التالية ، إن وجدت.
استكشاف الأخطاء وإصلاحها
إذا كنت تواجه مشكلة في بدء تشغيل الحاويات ، فإن أول شيء يجب أن lxc-start
الأمر lxc-start
في وضع المقدمة . فمثلا:
[sourcecode] lxc-start -n ubu1 -F [/ sourcecode]
هذا سوف يعرض لك الأخطاء على consol e الحالي ، وهو مفيد جدا في تحديد طبيعة المشكلة.
مشاكل مع تشغيل حاويات متعددة في وقت واحد
إذا حاولت تشغيل حاويات متعددة في وقت واحد ، فقد تشاهد أخطاء مثل "تم الوصول إلى الحصص" أو "فشل في إنشاء الشبكة التي تمت تهيئتها". هذا لأنك تقوم بتشغيل واجهات شبكة أكثر مما تم تخصيصه لك. يمكنك زيادة عدد جسور الشبكة التي يمكن للمستخدم تشغيلها عن طريق تعديل ملف /etc/lxc/lxc-usernet
كجذر . قد يبدو شيء من هذا القبيل:
[sourcecode] # USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5 [/ sourcecode]
يمكنك تغيير الرقم في النهاية (5 في هذا المثال) ، إلى رقم أكبر مثل 10. سيسمح لك هذا بتشغيل ما يصل إلى 10 حاويات دفعة واحدة.
استخدامات أخرى لحاويات Linux
حاويات لينكس لها استخدامات مختلفة. يمكنك استخدامها كمربعات اختبار خفيفة الوزن ، على سبيل المثال ، لاختبار تكوينات مختلفة لخادم الويب أو قاعدة البيانات قبل الالتزام بها إلى خادم الإنتاج. حالة استخدام أخرى هي اختبار كيفية تشغيل تطبيق على إصدارات مختلفة من distros المختلفة.
يمكنك أيضًا استخدامها لعزل التطبيقات التي لا تثق بها - أي ضرر مثل هذا التطبيق سيقتصر على الحاوية الخاصة به ، ولن يؤثر على النظام المضيف. يرجى ملاحظة أنه في حين أنه من الممكن تشغيل تطبيقات واجهة المستخدم الرسومية في الحاوية ، إلا أنه يستغرق قدرا كبيرا من الوقت والجهد ، وبالتالي لا ينصح به. إذا كنت ترغب في تشغيل تطبيقات واجهة المستخدم الرسومية في وضع الحماية ، يمكنك الرجوع إلى مقالتنا حول كيفية وضع تطبيقات وضع الحماية في Linux.
تشغيل Distros متعددة في وقت واحد مع حاويات لينكس
وهكذا ينتهي لدينا كيف حول تشغيل توزيعات لينكس متعددة على جهاز كمبيوتر واحد ، دون النفقات العامة لجهاز ظاهري كامل الحجم. تقتصر فائدة هذه التقنية فقط على إبداعك ، لذا لا تتردد في تجربة التجربة والتعرف على حالات الاستخدام الجديدة. إذا واجهتك مشكلة في إعداد الحاويات ، فلا تتردد في طرح سؤال لنا في قسم التعليقات.