أصبحت الحاويات أداة لا غنى عنها. فهي توفر قابلية النقل، الاتساق، والكفاءة، مما يسمح للمطورين ببناء ونشر التطبيقات بشكل موثوق عبر بيئات مختلفة. لسنوات، كان Docker هو المعيار الفعلي على نظام macOS، ولكن منافسًا جديدًا، ولد مباشرة من Apple، يستعد لتقديم تجربة أكثر تكاملاً وأصلية ومبسطة للمطورين على Apple Silicon: container
.
container
هي أداة جديدة مفتوحة المصدر من Apple تتيح لك إنشاء وتشغيل حاويات Linux قياسية ومتوافقة مع OCI على جهاز Mac الخاص بك. مكتوبة بالكامل بلغة Swift ومُحسّنة لـ Apple Silicon، وهي مصممة لتكون بديلاً خفيف الوزن وعالي الأداء لأوقات تشغيل الحاويات الأخرى. تستفيد من تقنيات المحاكاة الافتراضية الخاصة بنظام macOS لتشغيل الحاويات كآلات افتراضية بسيطة ومعزولة، مما يعد بأمان أفضل وبصمة أصغر.
يقدم هذا المقال نظرة عميقة على مشروع container
من Apple. سنستكشف بنيته، وفوائده الرئيسية، ثم نمر عبر دليل شامل حول كيفية بناء وتشغيل ومشاركة أول تطبيق لك في حاوية. سواء كنت مطورًا خلفيًا متمرسًا أو مستخدمًا فضوليًا لجهاز Mac، ستجد كل ما تحتاجه للبدء بهذه الأداة الجديدة المثيرة.
هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟
Apidog يلبي جميع مطالبك، ويحل محل Postman بسعر أكثر معقولية بكثير!
لماذا أداة حاويات جديدة؟ الرؤية وراء container
في بيئة تهيمن عليها الجهات الفاعلة الراسخة، لماذا قررت Apple بناء أداة الحاويات الخاصة بها؟ الإجابة تكمن في رؤية لتجربة متكاملة بعمق، عالية الأداء، وسهلة للمطورين على أجهزتها وبرامجها الخاصة. container
ليست مجرد نسخة أخرى من Docker؛ إنها إعادة تصور لما يمكن أن تكون عليه الحاويات على جهاز Mac.
الأداء الأصلي على Apple Silicon
على عكس الحلول الأخرى التي قد تعتمد على آلات افتراضية Linux أثقل أو طبقات توافق عبر الأنظمة الأساسية، تم بناء container
من الألف إلى الياء لـ Apple Silicon. إنه تطبيق Swift يتحدث مباشرة إلى Virtualization.framework
الأصلي من Apple. ينتج عن ذلك ميزة أداء كبيرة. لا توجد طبقة محاكاة مثل Rosetta 2 متضمنة لوقت التشغيل نفسه، وتعمل كل حاوية في آلة افتراضية خفيفة الوزن خاصة بها، يتم تشغيلها في جزء صغير من الوقت الذي يستغرقه تشغيل آلة افتراضية كاملة.
بنية آمنة بشكل فريد
الأمان هو حجر الزاوية في تصميم container
. يكشف النظرة الفنية العامة عن قرار معماري رئيسي: بدلاً من تشغيل جميع الحاويات داخل آلة افتراضية Linux واحدة مشتركة، يقوم container
بتشغيل آلة افتراضية دقيقة مخصصة وبسيطة لكل حاوية.
يوفر نموذج "آلة افتراضية واحدة لكل حاوية" هذا عزلاً قويًا على مستوى الأجهزة. العملية التي تخرج من حاويتها ستجد نفسها داخل آلة افتراضية مقيدة بشدة ومخصصة لغرض واحد، وليس في بيئة مشتركة مع إمكانية الوصول إلى حاويات أخرى. هذا يقلل بشكل كبير من سطح الهجوم المحتمل ويعزز الوضع الأمني العام لبيئة التطوير الخاصة بك.
توافق OCI: العمل بشكل جيد مع الآخرين
على الرغم من بنيتها الفريدة، تتبنى container
المعايير المفتوحة بالكامل. فهي تستهلك وتنتج صورًا متوافقة مع Open Container Initiative (OCI). هذه ميزة حاسمة، حيث تعني أنك لست مقيدًا بنظام بيئي خاص. يمكنك سحب صورة قياسية من Docker Hub، وتشغيلها باستخدام container
، وبناء صورة جديدة، ودفعها مرة أخرى إلى أي سجل متوافق مع OCI مثل GitHub Container Registry (ghcr.io). ستعمل صورك التي تم بناؤها باستخدام container
بسلاسة في أدوات أخرى وفي خطوط أنابيب CI/CD الإنتاجية.
تكامل عميق مع macOS
container
هو مواطن صالح على macOS. يتكامل مع تقنيات النظام الأساسية لتوفير تجربة مستخدم سلسة:
- المحاكاة الافتراضية والشبكات: يستخدم
Virtualization.framework
وvmnet
لإدارة فعالة للآلات الافتراضية والشبكات. - إدارة الخدمات: يتم إدارة خادم
container-apiserver
بواسطةlaunchd
، وهي الطريقة القياسية لإدارة الخدمات على macOS. - الأمان: يستفيد من خدمات Keychain لتخزين بيانات اعتماد السجل بشكل آمن.
- التسجيل: يتكامل مع نظام تسجيل macOS الموحد، لذا فإن جميع مخرجاته التشخيصية موجودة في مكان مألوف.
تحت الغطاء: نظرة فنية سريعة وعميقة
أداة سطر الأوامر container
هي عميل يتواصل مع عملية خادم في الخلفية، container-apiserver
. هذا الخادم، الذي تبدأه باستخدام container system start
، يدير كل شيء.
عندما تصدر أمرًا مثل container run
، يقوم خادم API بتشغيل مساعد وقت تشغيل مخصص (container-runtime-linux
) لتلك الحاوية المحددة. هذا المساعد، بدوره، يستخدم Virtualization.framework
لإنشاء آلة افتراضية Linux جديدة وبسيطة تستضيف عمليات حاويتك. هذه البنية أنيقة، قوية، ومصممة للأمان والأداء.
من المهم ملاحظة أنه كمشروع جديد، لدى container
بعض القيود. يتطلب إصدارًا حديثًا من macOS (macOS 15، مع أفضل أداء على أحدث إصدار تجريبي macOS 26 Beta 1). هناك بعض الحلول البديلة المحددة للشبكات بين الحاويات والمضيف، والميزات المتقدمة مثل توسيع الذاكرة (memory ballooning) لا تزال قيد التطوير. ومع ذلك، فإن الأساس قوي والمشروع يتطور بسرعة.
كيفية استخدام container
: دليل خطوة بخطوة
دعنا نبدأ العمل. سيرشدك هذا الدليل عبر دورة حياة كاملة للحاوية: بناء صورة لخادم ويب بسيط، تشغيلها، التفاعل معها، ونشرها.
الخطوة 1: التثبيت والإعداد
أولاً، تأكد من استيفاء المتطلبات: جهاز Mac بمعالج Apple Silicon يعمل بإصدار حديث من macOS.
تثبيت container
: قم بتنزيل أحدث حزمة تثبيت موقعة من صفحة إصدار GitHub الخاصة بالمشروع. انقر نقرًا مزدوجًا على ملف .pkg
واتبع تعليمات التثبيت.
بدء الخدمة: افتح الطرفية الخاصة بك وابدأ خدمات نظام container
.
container system start
في المرة الأولى التي تقوم فيها بتشغيل هذا، من المحتمل أن يطالبك بتنزيل وتثبيت نواة Linux افتراضية. اكتب y
واضغط على Enter للمتابعة.
التحقق من التثبيت: تحقق من أن الخدمة تعمل عن طريق سرد جميع الحاويات المتاحة (والتي يجب أن تكون لا شيء في هذه المرحلة).
container ls -a
# You should see empty headers:
# ID IMAGE OS ARCH STATE ADDR
الخطوة 2: بناء أول صورة لك
الآن، دعنا ننشئ صورة حاوية لخادم ويب بسيط بلغة Python.
إنشاء دليل مشروع:
mkdir web-test
cd web-test
إنشاء Dockerfile
: داخل دليل web-test
، أنشئ ملفًا باسم Dockerfile
(أو Containerfile
) بالمحتوى التالي. هذا الملف يحدد "الوصفة" لصورتنا.
# Start from a lightweight Python base image
FROM docker.io/python:alpine
# Set the working directory inside the container
WORKDIR /content
# Add the 'curl' utility for testing
RUN apk add curl
# Create a simple HTML file
RUN echo '<!DOCTYPE html><html><head><title>Hello from Container</title></head><body><h1>Hello, Apple Container!</h1></body></html>' > index.html
# The command to run when the container starts
CMD ["python3", "-m", "http.server", "80", "--bind", "0.0.0.0"]
بناء الصورة: الآن، أخبر container
ببناء صورة من Dockerfile
الخاص بك. سنقوم بتسميتها بالعلامة web-test
.
container build --tag web-test --file Dockerfile .
تشير النقطة .
في النهاية إلى أن الباني سيستخدم الدليل الحالي كسياق له.
سرد صورك: بعد اكتمال البناء، يمكنك رؤية صورتك الجديدة في مخزن الصور المحلي.
container images list
# You should see your `web-test` image and the `python:alpine` base image.
# NAME TAG DIGEST
# python alpine b4d299311845...
# web-test latest 25b99501f174...
الخطوة 3: تشغيل حاويتك
بعد بناء صورتنا، دعنا نشغلها.
تشغيل خادم الويب: استخدم أمر container run
لبدء حاوية من صورة web-test
الخاصة بك.
container run --name my-web-server --detach --rm web-test
دعنا نحلل هذه العلامات:
-name my-web-server
: يعطي حاويتنا اسمًا يسهل تذكره.-detach
(أوd
): يشغل الحاوية في الخلفية.-rm
: يزيل سجل الحاوية تلقائيًا عند توقفها، مما يحافظ على النظام.
التحقق من الحاوية قيد التشغيل: اسرد الحاويات النشطة.
container ls
سترى حاوية my-web-server
الخاصة بك في حالة running
، جنبًا إلى جنب مع عنوان IP المخصص لها في عمود ADDR
(على سبيل المثال، 192.168.64.3
).
الوصول إلى خادم الويب الخاص بك: افتح متصفح ويب وانتقل إلى عنوان IP الموضح في الخطوة السابقة. يجب أن ترى رسالة "Hello, Apple Container!".
# Replace the IP with the one from `container ls`
open <http://192.168.64.3>
الخطوة 4: التفاعل مع الحاوية
توفر container
أدوات قوية للتفاعل مع حاوياتك قيد التشغيل.
تنفيذ أمر: يمكنك تشغيل الأوامر مباشرة داخل الحاوية باستخدام container exec
. دعنا نسرد الملفات في دليل محتوى خادم الويب الخاص بنا.
container exec my-web-server ls /content
# Output: index.html
فتح واجهة تفاعلية: لتصحيح الأخطاء الأكثر تعقيدًا، يمكنك الحصول على واجهة تفاعلية داخل الحاوية.
container exec -it my-web-server sh
علامات -it
(--interactive
و--tty
) حاسمة لربط الطرفية الخاصة بك بالواجهة داخل الحاوية. ستنتقل إلى موجه واجهة داخل WORKDIR
الخاص بحاويتك. يمكنك النظر حولك، والتحقق من العمليات، ثم كتابة exit
للعودة إلى طرفية جهاز Mac الخاص بك.
الخطوة 5: نشر صورتك
مشاركة عملك سهلة. دعنا ندفع صورتنا إلى سجل حاويات. يستخدم هذا المثال Docker Hub، ولكن أي سجل OCI سيعمل. (يفترض هذا أن لديك حساب Docker Hub باسم المستخدم fido
).
تسجيل الدخول إلى السجل:
# This will prompt for your username and password/token
container registry login docker.io
تسمية الصورة للنشر: تتطلب السجلات تسمية الصور بتنسيق registry/username/image:tag
. دعنا ننشئ علامة جديدة لصورتنا.
container images tag web-test docker.io/fido/web-test:latest
دفع الصورة:
container images push docker.io/fido/web-test:latest
صورتك متاحة الآن للآخرين لسحبها وتشغيلها، على أي منصة متوافقة مع OCI!
الخطوة 6: التنظيف
بمجرد الانتهاء، يمكنك إيقاف الحاوية وإغلاق الخدمة.
# Stop the container
container stop my-web-server
# Stop all container services
container system stop
ما وراء الأساسيات
يغطي الدليل التدريبي سير العمل الأساسي، ولكن container
يمكن أن يفعل المزيد. فيما يلي بعض الميزات من وثائق how-to.md
:
إدارة الموارد: يمكنك التحكم في الموارد المخصصة لحاوياتك. لعمليات البناء التي تتطلب ذاكرة مكثفة، يمكنك منح الباني المزيد من ذاكرة الوصول العشوائي ووحدات المعالجة المركزية:
container builder start --cpus 8 --memory 16g
مشاركة الملفات: يمكنك تحميل دليل من جهاز Mac الخاص بك إلى الحاوية باستخدام علامة -volume
، وهو أمر ضروري لسير عمل التطوير حيث تريد تحرير الكود على المضيف ورؤية التغييرات مباشرة في الحاوية.
container run --volume ${HOME}/my-project:/app my-image
بناء متعدد المنصات: يمكنك بناء صور تعمل على كل من معالجات Apple Silicon (arm64
) ومعالجات Intel (amd64
) في أمر واحد، وهو مثالي للنشر على بيئات خوادم متنوعة.
container build --arch arm64 --arch amd64 --tag my-multi-arch-image .
فحص متقدم: يوفر أمر container inspect
معلومات JSON مفصلة حول الحاويات والصور، وهو مفيد للبرمجة النصية والأتمتة.
الخلاصة
container
من Apple هي أكثر من مجرد أداة جديدة؛ إنها بيان. إنها تشير إلى الالتزام بتوفير أدوات مطور من الدرجة الأولى ومتكاملة لعصر تطوير التطبيقات السحابية الحديث. من خلال بناء وقت تشغيل حاويات خفيف الوزن وآمن وعالي الأداء مباشرة في نظام التشغيل، تخفض Apple حاجز الدخول لاستخدام الحاويات على جهاز Mac وتقدم بديلاً مقنعًا للحلول الحالية.
على الرغم من أن المشروع لا يزال شابًا، إلا أن أساسه صلب، وبنيته سليمة، والتزامه بالمعايير المفتوحة يضمن أنه سيكون لاعبًا قيمًا في نظام الحاويات الأوسع. إذا كنت مطورًا على جهاز Mac بمعالج Apple Silicon، فإن container
هو مشروع يجب عليك مراقبته - وتجربته - اليوم.
هل تريد منصة متكاملة وشاملة لفريق المطورين الخاص بك للعمل معًا بأقصى قدر من الإنتاجية؟
Apidog يلبي جميع مطالبك، ويحل محل Postman بسعر أكثر معقولية بكثير!