جارٍ التشغيل Ollama in Docker هو الطريقة الأنظف للحفاظ على خادم النماذج المحلي قابلاً للتكرار: نفس الأمر يعمل على جهاز كمبيوتر محمول، وخادم منزلي، وصندوق وحدة معالجة رسومية مستأجر، دون تسريب أي عناصر إلى النظام المضيف. الإعداد بسيط، لكن تفصيلين — تمرير وحدة المعالجة الرسومية وثبات الحجم (Volume Persistence) — يسببان معظم الهدر في الوقت.
إجابة سريعة
قم بتنزيل الصورة الرسمية وتشغيلها باستخدام حجم مُسمّى (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 على النظام المضيف، وإعادة تشغيل خدمة Docker، ثم إضافة الخيار --gpus=all. ويمكنك التحقق من نجاح العملية من داخل الحاوية عبر الأمر docker exec -it ollama nvidia-smi — إذا فشلت هذه الأوامر، سيعمل Ollama لكن بصمت على المعالج المركزي، وستخلص إلى أن بطاقتك الرسومية بطيئة في حين أنها لا تُستخدم أساساً. على Windows المسار هو Docker Desktop مع WSL2 وتعريفات NVIDIA الحالية. مستخدمو AMD يحتاجون إلى الصورة المصنفة ROCm بدلاً من الافتراضية، وبطاقات GPU من Apple Silicon لا يمكن نقلها إلى Docker على الإطلاق — على Mac، شغّل Ollama بصيغته الأصلية.
الاحتفاظ بالنماذج بين عمليات إعادة التشغيل
ملفات النموذج كبيرة الحجم وبطيئة في إعادة التنزيل، والحاوية بدون مجلد تطرح هذه الملفات في اللحظة التي تُحذف فيها. العلم -v ollama:/root/.ollama في كل أمر أعلاه ينشئ مجلداً مسمى يبقى محفوظاً عبر الإعادة والترقيات وتغييرات الصور. إذا كنت تفضل الاحتفاظ بالملفات في مكان يمكنك رؤيته، اربط دليل المضيف بدلاً من ذلك: -v /srv/ollama:/root/.ollama.
Docker Compose، لإعداد يمكنك الاحتفاظ به
لأي شيء دائم، ملف compose أفضل من أمر run طويل: فهو يسجل حجز GPU والمجلد والمنفذ في مكان واحد، يعيد تشغيل الخدمة تلقائياً، ويتيح لك إضافة واجهة ويب بجانبه لاحقاً. الحاوية تعرّض نقطة النهاية المتوافقة مع OpenAI نفسها على http://localhost:11434، لذا التطبيقات لا يمكنها التمييز بين التثبيتات المحصرة والأصلية.
رأي Convly
احصر Ollama في حاوية عندما تكون الآلة خادماً، وتخطّ Docker عندما تكون الآلة محمول شخصي. على خادم منزلي أو صندوق GPU مستأجر، إعداد المجلد زائد compose أفضل فعلاً: قابل للتكرار وقابل للترقية وسهل النقل. على جهاز شخصي — خاصة Mac حيث نقل GPU مستحيل — Docker يضيف طبقة تكلفك الأداء وتكسبك قليلاً. المشكلة الأكثر شيوعاً التي نراها ذاتية الإلحاق هي حاوية تعمل بصمت على CPU لأن أداة المجموعة لم تُثبت أبداً؛ شغّل nvidia-smi داخل الحاوية قبل أن تقيس أي شيء.
الأسئلة الشائعة
هل Ollama في Docker يدعم وحدات معالجة الرسومات؟
نعم على NVIDIA مع NVIDIA Container Toolkit و --gpus=all، وعلى AMD مع صورة ROCm. بطاقات GPU من Apple Silicon لا يمكن تعريضها إلى Docker — شغّل Ollama بصيغته الأصلية على macOS.
أين يتم تخزين النماذج في إعداد Docker؟
داخل الحاوية على /root/.ollama. اربط هذا المسار بمجلد مسمى أو دليل مضيف، وإلا ستختفي النماذج عند حذف الحاوية.
هل Ollama أبطأ في Docker؟
بشكل ضئيل على Linux مع نقل GPU صحيح. الأداء المتصور تقريباً دائماً يعني أن الحاوية على CPU لأن GPU لم يتم نقله بشكل صحيح.
هل يمكنني تشغيل عدة نماذج في حاوية واحدة؟
نعم — احسب بقدر ما تريد؛ Ollama يحمل النماذج عند الطلب. الحد هو الذاكرة: فقط النماذج المحملة نشطة تستهلك RAM أو VRAM.
جديد على الأداة؟ ابدأ من دليل تثبيت Ollama, وتحقق من متطلبات الأجهزة في متطلبات نظام Ollama، أو تحديد حجم نموذج باستخدام حاسبة VRAM.
