كيفية استخدام Docker Desktop على MacBook مع Apple Silicon دون بطء
دليل عملي للاستفادة القصوى من Docker Desktop على أجهزة Mac بمعالجات M1 وM2 وM3: إعدادات VirtioFS وRosetta 2 والذاكرة، وبدائل مثل OrbStack أو Colima عندما لا يكفي Docker.

إذا كنت تعمل بالحاويات على MacBook بمعالج Apple Silicon، فأنت تعرف أن Docker Desktop لا يعمل دائمًا بسلاسة. فهو يبدأ ببطء، ويستهلك الكثير من الذاكرة RAM، ويبدأ المروحة بالدوران عندما تبني صورة كبيرة نسبيًا، وإذا كانت صورتك من نوع linux/amd64 فالوضع يسوء. يتناول هذا الدليل هذه المشكلة: كيف تجعل Docker Desktop قابلًا للاستخدام على جهاز Mac بمعالج M1 أو M2 أو M3، وما الإعدادات التي يجب تعديلها، ومتى تقبل بأن Docker ليس الخيار الأفضل، وما البدائل الجديرة بالاهتمام.
كل ما يرد هنا اختُبر على macOS Sequoia 15.1 مع Docker Desktop 4.35 على جهاز MacBook Pro M3 Pro بذاكرة 18 غيغابايت، وعلى MacBook Air M2 بذاكرة 16 غيغابايت. المبادئ نفسها تنطبق على M1 أيضًا.
لماذا يعمل Docker Desktop ببطء على Apple Silicon
لا يعمل Docker بشكل أصلي على macOS، ولم يفعل ذلك يومًا. يحتاج Docker إلى نواة Linux، وmacOS لا تملكها. ما يفعله Docker Desktop هو تشغيل آلة افتراضية خفيفة تعمل بنظام Linux باستخدام إطار عمل الافتراضية الخاص بشركة Apple (Virtualization.framework على Apple Silicon)، وتشغيل خادم Docker داخلها.
وهذا يعني أمرين: طبقة افتراضية تعمل باستمرار، وجسر بين نظام الملفات في macOS ونظام الملفات داخل الآلة الافتراضية. وقد كان هذا الجسر تاريخيًا العنق الرئيسي للزجاجة.
أضف إلى ذلك الصور من نوع linux/amd64. جهازك من نوع ARM64، وعند تشغيل حاوية بمعمارية x86_64 يحاكيها Docker عبر Rosetta 2 أو QEMU. ومحاكاة معمارية كاملة لها ثمن، إذ يضيع ما بين 30% و60% من الأداء حسب الحمل.
المتطلبات المسبقة
- macOS 13 Ventura أو أحدث (يُنصح بـSequoia لاستقرار VirtioFS).
- Docker Desktop 4.25 أو أحدث. الإصدار 4.35 يتضمن تحسينات ملحوظة في إدارة الموارد.
- جهاز Mac بمعالج M1 أو M2 أو M3 (أو أحدث) وذاكرة 16 غيغابايت على الأقل إذا كنت ستعمل مع أكثر من حاويتين في الوقت نفسه.
- تثبيت Rosetta 2:
softwareupdate --install-rosetta --agree-to-license.
تثبيت Docker Desktop على Mac بمعالج Apple Silicon
نزّل مثبّت Apple Silicon من docker.com. انتبه إلى أن هناك نسختين: نسخة Intel ونسخة Apple Silicon. إذا نزّلت نسخة Intel عن طريق الخطأ، فسيمر كل شيء عبر Rosetta وستخسر الأداء دون سبب.
اسحب التطبيق إلى /Applications، وافتحه، ووافق على أذونات الشبكة المتقدمة، وانتظر حتى تظهر أيقونة الحوت في شريط القوائم.
الإعدادات الأساسية لمنع بطء Docker
هنا يقع 80% من هذا المقال. هذه هي الإعدادات التي تُحدث الفرق الحقيقي.
تفعيل VirtioFS كنظام ملفات
VirtioFS هو ما حل محل gRPC-FUSE. وهو أسرع بين 2 و5 مرات في القراءة والكتابة على الأحجام المركبة من macOS. وأصبح الآن الإعداد الافتراضي، لكن إذا كنت تستخدم تثبيتًا قديمًا فقد تكون ما زلت على gRPC-FUSE.
المسار: Docker Desktop ← Settings ← General ← Virtual Machine Options ← VirtioFS.
أعد تشغيل Docker بعد التغيير. ستلاحظ الفرق في أي مشروع Node أو PHP أو Python يركّب node_modules أو vendor من مجلدك المحلي.
استخدام إطار الافتراضية الجديد من Apple
في الشاشة نفسها، فعّل Use Virtualization framework (إطار Apple وليس QEMU). وهو الإطار الذي يستفيد من التسريع الأجهزة في شرائح M.
ومباشرة تحته، فعّل Use Rosetta for x86_64/amd64 emulation. هذا يستبدل محاكاة QEMU بـRosetta 2 عند تشغيل صور amd64. والتحسن في صور x86_64 كبير جدًا: ففي اختبارات مع حاويات MySQL 8 من نوع amd64 انخفض زمن البدء من 40 ثانية إلى أقل من 15 ثانية.
ضبط موارد المعالج والذاكرة والقرص
المسار: Settings ← Resources ← Advanced.
افتراضيًا يخصص Docker Desktop جزءًا متحفظًا من الموارد. على جهاز Mac بذاكرة 16 غيغابايت، ارفع الذاكرة إلى 8 غيغابايت إذا كنت ستعمل مع قواعد بيانات. وعلى جهاز بذاكرة 18 غيغابايت أو أكثر، بين 8 و10 غيغابايت. لا تتجاوز 50% من إجمالي الذاكرة، فـmacOS يحتاج إلى مساحة للتنفس.
المعالج: اترك نواتين حرتين على الأقل للنظام. في معالج M3 Pro ذي 12 نواة يمكنك تخصيص 8 نوى لـDocker دون مشكلة.
القرص: يكبر القرص الافتراضي حسب الحاجة. حدد له سقفًا معقولًا (64 غيغابايت تكفي غالبًا) ونظف الصور القديمة بالأمر docker system prune -a كل أسبوعين.
تعطيل الميزات التي لا تستخدمها
في Settings ← General ألغِ تحديد Send usage statistics، وOpen Docker Dashboard at startup إذا لم تكن بحاجة إليها، وSBOM indexing إذا لم تكن تحلل الثغرات الأمنية. كل واحدة منها تستهلك دورات معالج.
في Settings ← Kubernetes اترك Kubernetes معطلًا ما لم تكن تستخدمه فعلًا. فالكلاستر المحلي لـK8s يستهلك 2 غيغابايت من الذاكرة حتى لو لم تفعل شيئًا.
العمل مع صور ARM64 كلما أمكن
أسرع طريقة لكي يطير Docker على جهازك هي ألا تحاكي أي شيء. كثير من الصور الرسمية تتوفر بالفعل بإصدارات linux/arm64: PostgreSQL وRedis وNginx وNode وPython وRuby وGo ومعظم قواعد البيانات الحديثة.
تحقق من المعماريات المتاحة قبل تنفيذ pull:
docker manifest inspect postgres:16 | grep architecture
إذا رأيت arm64 فاسحب الصورة من هناك دون فرض منصة. وإذا وجدت amd64 فقط، فستحتاج إلى Rosetta.
لفرض منصة معينة:
docker run --platform linux/arm64 postgres:16
docker run --platform linux/amd64 mysql:5.7
في ملف docker-compose.yml أضف platform: linux/arm64 لكل خدمة لتجنب المفاجآت.
متى ينقذ Rosetta 2 الموقف ومتى لا ينقذه
يعمل Rosetta 2 بشكل جيد مع الملفات التنفيذية الثابتة والتطبيقات التي تقوم بحسابات عامة الغرض. أما بالنسبة لقواعد البيانات القديمة أو الأدوات الموروثة أو صور المؤسسات التي لا تتوفر إلا بـamd64، فإن تفعيل Rosetta ينقذك.
أما الأماكن التي لا يزال فيها Rosetta ضعيفًا: أحمال الإدخال والإخراج المكثفة، وآلات JVM القديمة (قد يتعطل Java 8 من نوع amd64)، وبعض الملفات التنفيذية التي تستخدم استدعاءات نظام غير اعتيادية. إذا أعطتك حاوية amd64 أخطاء غريبة مع تفعيل Rosetta، فجرّب تعطيله والعودة إلى QEMU لتلك الحالة فقط.
تحسين استخدام الأحجام
يظل تركيب مجلدات macOS داخل الحاوية العملية الأكثر تكلفة، حتى مع VirtioFS. ثلاث قواعد:
- لا تركّب
node_modulesأوvendorأو.gitإذا استطعت تجنب ذلك. استخدم أحجامًا مسماة في Docker لهذه المجلدات: فهي تعيش داخل الآلة الافتراضية وأسرع بمراتب من حيث الحجم. - استخدم
:delegatedأو:cachedفي التركيبات التي لا تحتاج إلى اتساق صارم. مع VirtioFS يكون التأثير أقل مما كان عليه، لكنه ما زال موجودًا. - تجنب مراقبات الملفات الضخمة. إذا كان إطار العمل لديك يعيد البناء في كل مرة تغيّر فيها ملفًا، فقلّص المسارات المراقَبة.
مثال على حجم مسمّى لـnode_modules:
services:
app:
build: .
volumes:
- .:/app
- node_modules:/app/node_modules
volumes:
node_modules:
بدائل Docker Desktop على Mac
Docker Desktop ليس الخيار الوحيد، وفي بعض الحالات ليس الأفضل. ثلاثة بدائل جادة:
OrbStack
OrbStack هو الأقرب إلى فكرة “Docker Desktop لكن سريع”. يستهلك ذاكرة أقل (يبدأ بنحو 400 ميغابايت مقابل 1.5 غيغابايت في Docker Desktop)، ويبدأ خلال 2-3 ثوانٍ، ويستخدم تطبيق افتراضية خاصًا به على Apple Silicon. ويتوافق مع واجهة سطر أوامر Docker دون تغييرات.
يكلف 8 دولارات شهريًا للاستخدام التجاري، ومجاني للاستخدام الشخصي. إذا كنت تعمل بالحاويات طوال اليوم، فإن توفير البطارية يغطي ثمنه.
Colima
Colima مجاني ومفتوح المصدر ويعمل من سطر الأوامر. يشغّل آلة Linux افتراضية عبر Lima ويعرض مقبس Docker. دون أي واجهة رسومية.
التثبيت:
brew install colima docker
colima start --cpu 4 --memory 8 --vm-type vz --vz-rosetta
يفعّل العلم --vz-rosetta استخدام Rosetta مع amd64. مثالي إذا كنت تعيش في الطرفية ولا تريد تطبيقًا يعمل باستمرار.
Podman
Podman هو نهج Red Hat: بلا خادم دائم، ويعمل دون صلاحيات جذر، ومتوافق مع واجهة Docker عبر الأسماء المستعارة. يعمل جيدًا على Apple Silicon، لكن نظام صوره وتكامله مع أدوات مثل docker-compose ما زالا أقل صقلًا.
جيد إذا كنت قادمًا من بيئات RHEL أو تريد المواءمة مع الإنتاج على Kubernetes/OpenShift.
أوامر مفيدة لتشخيص الأداء
لمعرفة أي حاوية تستهلك الموارد:
docker stats
لمعرفة الحجم الفعلي للصور والحاويات والأحجام:
docker system df
لتنظيف كل ما هو غير مستخدم (انتبه، سيحذف الصور غير المرتبطة بحاوية):
docker system prune -a --volumes
مشكلات شائعة وحلولها
لا يبدأ Docker Desktop بعد تحديث macOS. أعد تشغيل الخدمة: killall Docker && open /Applications/Docker.app. وإذا استمرت المشكلة، فاذهب إلى Troubleshoot ← Reset to factory defaults.
تدور المروحة بقوة عند بناء الصور. قلّل المعالج المخصص لـDocker في Settings ← Resources. وإذا بقي الوضع كما هو، فتحقق مما إذا كان Dockerfile لديك يحتوي على RUN تشغّل عمليات متوازية (npm install، cargo build).
الأحجام المركبة بطيئة جدًا. تأكد من تفعيل VirtioFS وفكّر في نقل المجلدات الثقيلة إلى أحجام مسماة.
حاوية amd64 لا تبدأ. تحقق من تثبيت Rosetta (يجب أن يعيد arch -x86_64 uname -m القيمة x86_64). وإذا استمر الفشل، فهذا الملف التنفيذي بعينه غير متوافق مع Rosetta 2؛ استخدم QEMU بتعطيل خيار Rosetta.
يستهلك Docker Desktop 3 غيغابايت من الذاكرة في وضع الخمول. هذا طبيعي في الإصدارات القديمة. حدّث إلى 4.30 أو أحدث؛ فمدير الذاكرة الديناميكي يعيد الذاكرة إلى النظام عندما لا توجد حاويات نشطة.
الأسئلة الشائعة
هل يمكنني استخدام Docker Desktop مجانًا للعمل؟
لا، إذا كنت تعمل في شركة تضم أكثر من 250 موظفًا أو تتجاوز إيراداتها السنوية 10 ملايين دولار. أما للاستخدام الشخصي والتعليم والشركات الناشئة الصغيرة فنعم. راجع الترخيص الرسمي لـDocker.
هل يستحق الانتقال إلى OrbStack؟ إذا كنت تستخدم الحاويات يوميًا وتزعجك استهلاكات Docker Desktop، فنعم. أما للاستخدام المتقطع فيكفيك Docker Desktop.
هل يحاكي Rosetta 2 أي صورة amd64 بشكل مثالي؟ لا. يغطي معظم الحالات، لكن الملفات التنفيذية المتخصصة جدًا (JVM القديمة، والأدوات ذات SIMD المعقدة) قد تفشل. وQEMU هو الخيار الاحتياطي.
هل يمكن تشغيل Kubernetes على Mac بمعالج M3 دون أن يتعطل الجهاز؟ نعم، لكن الأفضل باستخدام minikube أو k3d بدلًا من Kubernetes المدمج في Docker Desktop. كلاهما أخف. وإذا احتجت بيئة تطوير كاملة تجمع بين Windows وLinux معًا، فقد يهمك الاطلاع على كيفية تثبيت Windows 11 ARM على Mac بمعالج M3 باستخدام Parallels Desktop 20.
كم من الذاكرة أحتاج فعليًا للعمل بسلاسة مع Docker؟ 16 غيغابايت هو الحد الأدنى المقبول. و24 غيغابايت أو أكثر إذا كان مكدسك يتضمن قاعدة بيانات وواجهة خلفية وواجهة أمامية وخدمة مساعدة في الوقت نفسه. وإذا كنت تفكر في تغيير جهازك، فراجع المقارنة بين MacBook Pro M4 Pro وM4 Max قبل أن تقرر.



