أصدر فريق أبحاث أبل مؤخرًا container مشروع. إنها أداة سطر أوامر مفتوحة المصدر مكتوبة بلغة Swift. يقوم بإنشاء وتشغيل حاويات Linux كأجهزة افتراضية خفيفة الوزن على جهاز Mac. يأتي المشروع بموجب ترخيص Apache 2.0 ويستهدف Apple silicon.
الحاويات هي الطريقة التي تقوم بها بشحن البيئات القابلة للتكرار من جهاز كمبيوتر محمول إلى مركز البيانات. تقدم Apple الآن مسارًا أصليًا يتجنب وجود جهاز Linux VM واحد يعمل دائمًا.
ما هو أبل container ؟
container هي أداة CLI يمكن استخدامها لإنشاء الصور وتشغيل الحاويات ونقل الصور من وإلى السجلات. فهو يستهلك وينتج صور حاوية متوافقة مع OCI. لذا يمكنك السحب من Docker Hub أو GitHub Container Registry وتشغيل تلك الصور. يمكنك أيضًا دفع الصور التي تقوم بإنشائها إلى أي سجل قياسي.
container يستخدم حزمة Containerization Swift مفتوحة المصدر. تتعامل هذه الحزمة مع إدارة الحاويات والصور والعمليات ذات المستوى المنخفض. تتطلب الأداة جهاز Mac مزودًا بـ Apple silicon. أجهزة Intel Mac غير مدعومة. تدعم أبل container على نظام التشغيل macOS 26، والذي يضيف تحسينات للمحاكاة الافتراضية والشبكات. يمكنك تشغيله على نظام التشغيل macOS 15، ولكن مع قيود الشبكة.
كيف container يدير الحاويات الخاصة بك
تعمل معظم أدوات حاويات macOS على تشغيل جهاز Linux VM مشترك يستضيف كل حاوية. أبل تأخذ مسارا مختلفا. container يقوم بتشغيل جهاز افتراضي منفصل وخفيف الوزن لكل حاوية تقوم بإنشائها. تصف شركة Apple ثلاث خصائص لهذا التصميم:
- حماية: تتمتع كل حاوية بعزل جهاز افتراضي كامل. يؤدي الحد الأدنى من الأدوات المساعدة الأساسية والمكتبات الديناميكية إلى تقليل استخدام الموارد وسطح الهجوم.
- خصوصية: يمكنك فقط تحميل البيانات التي يحتاجها كل جهاز افتراضي، بدلاً من مشاركة كل شيء.
- أداء: تستخدم هذه الحاويات ذاكرة أقل من الأجهزة الافتراضية الكاملة. أوقات التمهيد قابلة للمقارنة بالحاويات الموجودة في جهاز افتراضي مشترك.
يدمج وقت التشغيل العديد من أطر عمل macOS. ويستخدم إطار عمل المحاكاة الافتراضية للأجهزة الافتراضية، وإطار عمل vmnet للتواصل. ويستخدم XPC للاتصال بين العمليات، ويتم إطلاقه لإدارة الخدمة، وخدمات Keychain لبيانات اعتماد التسجيل.
تحتوي طائرة التحكم على عدد قليل من الأجزاء المتحركة. container system start تطلق container-apiserver، وكيل الإطلاق. يقوم خادم apiserver بعد ذلك بتشغيل مساعد XPC container-core-images لإدارة الصور ومخزن المحتوى المحلي. ويبدأ أيضا container-network-vmnet للشبكة الافتراضية. يتم إطلاقه لكل حاوية container-runtime-linux، مساعد إدارة كل حاوية.
الشرح التفاعلي
استخدام الحالات مع الأمثلة
تطوير الواجهة الخلفية المحلية. قم بتشغيل خدمة في جهاز افتراضي معزول خاص بها، ثم قم بإعادة توجيه المنفذ إلى عنوان الاسترجاع الخاص بك.
container run -d --rm -p 127.0.0.1:8080:8000 \
node:latest npx http-server -a :: -p 8000
curl http://127.0.0.1:8080
تصميمات قابلة للتكرار على طراز CI. container build يبدأ حاوية أدوات البناء التي تستخدم BuildKit. يمكنك تحديد حجم جهاز VM الخاص بالمنشئ للإنشاءات الثقيلة.
container builder start --cpus 8 --memory 32g
container build --tag web-test:latest --file Dockerfile
صور عبر البنية لنشر مركز البيانات. أنشئ صورة واحدة لكل من خوادم Apple silicon وx86-64. ال amd64 يعمل البديل تحت ترجمة Rosetta.
container build --arch arm64 --arch amd64 \
--tag registry.example.com/fido/web-test:latest
تركيب مجموعات البيانات للتحليل. مشاركة مجلد مضيف في الحاوية مع --volume. يعد هذا مفيدًا لتغذية البيانات المحلية في مهمة محتواة.
container run --volume ${HOME}/Desktop/assets:/content/assets \
docker.io/python:alpine ls -l /content/assets
عزل التعليمات البرمجية غير الموثوق بها أو التي تم إنشاؤها. تعمل كل حاوية في جهاز افتراضي خاص بها، وليس في نواة مشتركة. يناسب هذا الحد تشغيل التعليمات البرمجية من وكيل أو صورة غير معروفة مع تعرض أقل للمضيف.
التدريب العملي: الأوامر الأساسية
موارد الحاوية الافتراضية هي 1 غيغابايت من ذاكرة الوصول العشوائي و4 وحدات المعالجة المركزية. يمكنك تجاوزها في كل شوط.
container run --rm --cpus 8 --memory 32g big
فحص استخدام الموارد الحية، على غرار top للعمليات.
container stats --no-stream my-web-server
اقرأ سجلات تمهيد الجهاز الظاهري والبدء عند تصحيح أخطاء بدء التشغيل.
container logs --boot my-web-server
في نظام التشغيل macOS 26، يمكنك إنشاء شبكات معزولة. لا يمكن للحاويات الموجودة على شبكات مختلفة الوصول إلى بعضها البعض.
container network create foo --subnet 192.168.100.0/24
container run -d --name web --network foo --rm web-test
افتراضيًا، تبدأ الحاويات بمجموعة مقيدة من إمكانيات Linux. يمكنك ضبطها بشكل صريح.
container run --cap-drop ALL --cap-add SETUID --cap-add SETGID alpine id
يضيف الإصدار 1.0.0 أيضًا آلات الحاويات. هذه هي بيئات Linux المستمرة التي تم إنشاؤها من صور OCI. تم تثبيت الدليل الرئيسي الخاص بك، ويطابق المستخدم الذي قام بتسجيل الدخول حساب Mac الخاص بك. نظام الملفات يبقى على قيد الحياة توقف وابدأ. أي صورة تحتوي على /sbin/init مؤهل كآلة حاوية.
هناك تغييران آخران في الإصدار 1.0.0 يؤثران على برامج الترقية. تم نقل إعدادات النظام إلى ملف TOML في ~/.config/container/config.toml. ال container system property get و set تمت إزالة الأوامر الفرعية. أضافت الأداة أيضًا مخرجات JSON وYAML وTOML منظمة list و inspectوتسهيل الأتمتة.
تفاحة container مقابل دوكر سطح المكتب
| ملكية | تفاحة container |
سطح المكتب دوكر |
|---|---|---|
| نموذج العزلة | جهاز افتراضي واحد خفيف الوزن لكل حاوية | Linux VM مشترك، نواة مشتركة |
| البصمة الخاملة | بالقرب من الصفر عندما لا يعمل شيء | VM يعمل دائمًا في الخلفية |
| تنسيق الصورة | متوافق مع OCI | متوافق مع OCI |
| بناء المحرك | BuildKit عبر Builder VM | BuildKit |
| رخصة | أباتشي 2.0 | المصطلحات التجارية للمؤسسات الكبيرة |
| الأجهزة | أبل السيليكون فقط | أبل السيليكون وإنتل |
| يؤلف / واجهة المستخدم الرسومية | غير مدمج | نعم |
| أفضل ملاءمة | تشغيل حاوية واحدة، العزلة الأصلية | إنشاء سير العمل والنظام البيئي الناضج |
نقاط القوة والقيود
نقاط القوة: يؤدي عزل VM لكل حاوية إلى تقليل سطح الهجوم المشترك مقابل النواة المشتركة. تكلفة الذاكرة الخاملة منخفضة، حيث أن الحاويات المتوقفة تحرر بصمتها. ويعني توافق OCI أن صورك تعمل في مكان آخر دون تحويل. لا يحمل ترخيص Apache 2.0 ميزة حظر الاشتراك غير المدفوع.
القيود: يدعم إطار عمل macOS Virtualization تضخم الذاكرة الجزئي فقط. لا يتم دائمًا التنازل عن الصفحات التي يتم تحريرها داخل الحاوية للمضيف. قد تحتاج أحمال العمل الثقيلة إلى إعادة التشغيل من حين لآخر لتقليل استخدام الذاكرة. لا يوجد Docker Compose مدمج. يواجه مستخدمو macOS 15 قيودًا على الشبكة، كما أن أجهزة Intel Mac غير مدعومة.
تحقق من الريبو هنا. أيضا، لا تتردد في متابعتنا على تغريد ولا تنسى الانضمام إلينا 150 ألف + مل والاشتراك في النشرة الإخبارية لدينا. انتظر! هل أنت على برقية؟ الآن يمكنك الانضمام إلينا على التليجرام أيضًا.
هل تحتاج إلى الشراكة معنا للترويج لصفحة GitHub Repo أو صفحة الوجه المعانقة أو إصدار المنتج أو الندوة عبر الويب وما إلى ذلك؟ تواصل معنا
اكتشاف المزيد من كحيل | أخبار التقنية
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.
