جارٍ التشغيل تشغيل Ollama داخل حاوية Docker هو الطريقة الأنظف للحفاظ على خادم النماذج المحلي قابلاً للتكرار: نفس الأمر يعمل على جهاز كمبيوتر محمول، وخادم منزلي، وصندوق وحدة معالجة رسومية مستأجر، دون تسريب أي عناصر إلى النظام المضيف. الإعداد بسيط، لكن تفصيلين — تمرير وحدة المعالجة الرسومية وثبات الحجم (Volume Persistence) — يسببان معظم الهدر في الوقت.
Quick answer
قم بتنزيل الصورة الرسمية وتشغيلها باستخدام حجم مُسمّى (Named Volume) لكي تبقى النماذج موجودة بعد إعادة التشغيل: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. ولدعم وحدات معالجة الرسوميات من شركة NVIDIA، قم بتثبيت أداة "NVIDIA Container Toolkit" على النظام المضيف وأضف الخيار --gpus=all. ثم قم بتنزيل النماذج داخل الحاوية باستخدام الأمر docker exec -it ollama ollama pull llama3.1. وتكون واجهة برمجة التطبيقات (API) متاحة على المنفذ 11434 تمامًا كما في التثبيت الأصلي.
الأوامر الثلاثة الأساسية
| الهدف | الأمر |
|---|---|
| معالج فقط (بدون وحدة معالجة رسومية) | docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama |
| مع وحدة معالجة رسومية من NVIDIA | docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama |
| تنزيل نموذج | docker exec -it ollama ollama pull llama3.1 |
تمرير وحدة المعالجة الرسومية: الجزء الذي يفشل غالبًا
لا يمكن للحاوية رؤية وحدة المعالجة الرسومية افتراضيًا. وعلى أنظمة Linux، يجب تثبيت أداة NVIDIA Container Toolkit على النظام المضيف، وإعادة تشغيل خدمة Docker، ثم إضافة الخيار --gpus=all. ويمكنك التحقق من نجاح العملية من داخل الحاوية عبر الأمر docker exec -it ollama nvidia-smi — فإذا فشل هذا الأمر، فستعمل أداة Ollama ولكن بشكل صامت على وحدة المعالجة المركزية (CPU)، وقد تستنتج خطأً أن وحدة المعالجة الرسومية بطيئة، بينما الحقيقة أنها لم تُستخدم أساسًا. أما على أنظمة Windows، فالحل هو استخدام Docker Desktop مع محرك WSL2 والمشغلات الحالية من NVIDIA. أما مستخدمو وحدات معالجة الرسوميات من AMD فيجب عليهم استخدام الصورة المُوسومة بـ ROCm بدلًا من الصورة الافتراضية، ولا يمكن على الإطلاق تمرير وحدات معالجة الرسوميات من Apple Silicon إلى حاويات Docker — لذا يجب تشغيل Ollama بشكل أصلي على أجهزة Mac.
الاحتفاظ بالنماذج بين عمليات إعادة التشغيل
ملفات النماذج كبيرة وبطيئة التنزيل، كما أن الحاوية التي لا تحتوي على حجم (Volume) ستتخلص منها فور إزالتها. ويقوم الخيار -v ollama:/root/.ollama الموجود في جميع الأوامر أعلاه بإنشاء حجم مُسمّى يظل موجودًا عبر عمليات إعادة التشغيل والترقيات وتغيير الصور. وإذا كنت تفضل تخزين الملفات في مكان يمكنك رؤيته مباشرةً، فيمكنك ربط دليل (Directory) على النظام المضيف بدلًا من ذلك باستخدام الخيار -v /srv/ollama:/root/.ollama.
Docker Compose، لإعداد يمكنك الاحتفاظ به
وبالنسبة لأي إعداد دائم، فإن ملف docker-compose أفضل من أمر تشغيل طويل: فهو يسجل تخصيص وحدة المعالجة الرسومية، والحجم، والمنفذ في مكان واحد، ويُعيد تشغيل الخدمة تلقائيًا، ويتيح لك لاحقًا إضافة واجهة ويب رسومية جنبًا إلى جنب معها. وتعرض الحاوية نفس نقطة النهاية (Endpoint) المتوافقة مع OpenAI على http://localhost:11434, وبالتالي لا يمكن لأي تطبيق التمييز بين التثبيت داخل الحاوية والتثبيت الأصلي.
Convly’s take
استخدم الحاويات لتشغيل Ollama عندما يكون الجهاز خادمًا، وتجنَّب Docker عند استخدام جهاز الكمبيوتر المحمول الشخصي. فعلى الخوادم المنزلية أو صناديق وحدات المعالجة الرسومية المستأجرة، يُعد إعداد الحجم مع docker-compose فعليًا أفضل: قابل للتكرار، وقابل للترقية، وسهل النقل. أما على الأجهزة الشخصية — وبخاصة أجهزة Mac التي لا تدعم تمرير وحدة المعالجة الرسومية أصلًا — فإن استخدام Docker يضيف طبقة تُضعف الأداء ولا تقدِّم فائدة تُذكر. وأكثر المشكلات التي يسببها المستخدمون لأنفسهم شيوعًا هي تشغيل الحاوية بصمت على وحدة المعالجة المركزية بسبب عدم تثبيت أداة NVIDIA Container Toolkit أصلًا؛ لذا تأكَّد من تنفيذ الأمر nvidia-smi داخل الحاوية قبل إجراء أي اختبار أداء.
الأسئلة الشائعة
هل يدعم Ollama داخل حاويات Docker وحدات المعالجة الرسومية؟
نعم، مع وحدات معالجة الرسوميات من NVIDIA عند استخدام أداة NVIDIA Container Toolkit مع الخيار --gpus=all, ومع وحدات معالجة الرسوميات من AMD عند استخدام الصورة المُوسومة بـ ROCm. أما وحدات معالجة الرسوميات من Apple Silicon فلا يمكن عرضها داخل حاويات Docker — لذا يجب تشغيل Ollama بشكل أصلي على أنظمة macOS.
أين يتم تخزين النماذج في إعداد Docker؟
داخل الحاوية في المسار /root/.ollama. قم بربط هذا المسار بحجم مُسمّى أو بدليل على النظام المضيف، وإلا ستختفي النماذج عند إزالة الحاوية.
هل يكون أداء Ollama أبطأ داخل حاويات Docker؟
لا يُذكر على أنظمة Linux عند تمرير وحدة المعالجة الرسومية بشكل صحيح. أما الإحساس بالبطء في الغالب يعني أن الحاوية تعمل على وحدة المعالجة المركزية لأن تمرير وحدة المعالجة الرسومية لم يتم بشكل صحيح.
هل يمكنني تشغيل عدة نماذج داخل حاوية واحدة؟
نعم — يمكنك تنزيل أي عدد تريده منها؛ حيث يقوم Ollama بتحميلها عند الحاجة. والحد الوحيد هو الذاكرة: ففقط النماذج المحملة فعليًا هي التي تستهلك الذاكرة العشوائية (RAM) أو ذاكرة وحدة المعالجة الرسومية (VRAM).
إذا كنت جديدًا على هذه الأداة، ابدأ بـ دليل تثبيت Ollama, وتحقق من متطلبات الأجهزة في متطلبات نظام Ollama، أو تحديد حجم نموذج باستخدام حاسبة الذاكرة المخصصة للرسومات (VRAM).

