تجربتي في تشغيل Ollama داخل Docker وربطها مع واجهة للتجربة
خلال الفترة الأخيرة كنت أجرّب نماذج ذكاء اصطناعي محلية، فقط بدافع الفضول والفهم، وليس للاستخدام الدائم أو الإنتاجي.
Ollama لفتت انتباهي لأنها تعطيك طريقة مباشرة لتشغيل نماذج محليًا بدون إعدادات معقدة.
لكن بدل ما أشغّلها مباشرة على النظام، قررت تكون التجربة داخل Docker.
ليش اخترت Docker للتجربة؟
الهدف من التجربة ما كان الاعتماد عليها بشكل دائم، بل:
- أفهم كيف تشتغل Ollama
- أجرب النماذج بدون ما أغيّر إعدادات النظام
- أقدر أحذف كل شيء بسهولة بعد ما أنتهي
Docker أعطاني هذا كله:
- عزل كامل
- تنظيف سهل
- بدون تأثير على النظام الأساسي
دليل تقني شامل لإدارة الحاويات والبنية المعزولة Docker
تشغيل Ollama داخل Docker
أول خطوة كانت سحب الصورة الرسمية:
docker pull ollama/ollama
بعدها شغّلت الحاوية:
docker run -d \
--name ollama-test \
-p 11434:11434 \
-v ollama-test:/root/.ollama \
ollama/ollama
بهذا الشكل:
- الخدمة شغالة داخل حاوية
- النماذج محفوظة في Volume
- التجربة معزولة بالكامل
تحميل نموذج وتجربته
دخلت على الحاوية:
docker exec -it ollama-test bash
وحملت نموذج للتجربة:
ollama pull llama3
وبعدها شغّلته:
ollama run llama3
الهدف هنا كان بسيط:
- أتأكد إن Ollama شغالة
- أشوف أداء النموذج
- أفهم طريقة التفاعل
التعامل مع Ollama كـ API
من الأشياء اللي حبيت أجرّبها إن Ollama توفر API محلي.
العنوان:
http://localhost:11434
مثال طلب:
POST /api/generate
بهذا أقدر:
- أرسل prompt من أي أداة
- أربطها مع واجهة بسيطة
- أفهم طريقة التكامل
ربط Ollama مع واجهة بسيطة
جزء من التجربة كان ربط Ollama مع واجهة خفيفة فقط للعرض.
الفكرة:
- الواجهة ترسل النص
- Ollama ترجع الرد
- النتيجة تظهر مباشرة
مثال طلب من الواجهة:
fetch('http://localhost:11434/api/generate', {
method: 'POST',
body: JSON.stringify({
model: 'llama3',
prompt: 'Explain Docker simply'
})
});
ما كان الهدف بناء منتج، فقط تجربة التكامل وفهم التدفق.
تنظيم التجربة باستخدام Docker Compose
عشان تكون التجربة أوضح، استخدمت Docker Compose:
version: "3.9"
services:
ollama:
image: ollama/ollama
container_name: ollama-test
ports:
- "11434:11434"
volumes:
- ollama-test:/root/.ollama
ui:
image: test-ui
ports:
- "3000:3000"
depends_on:
- ollama
volumes:
ollama-test:
بهذا الشكل:
- كل شيء منفصل
- سهل التشغيل والإيقاف
- التجربة واضحة
وش اللي تعلمته من التجربة؟
حتى كـ تجربة فقط، طلعت بفوائد واضحة:
- فهم عملي لكيفية تشغيل نماذج محليًا
- التعامل مع AI كخدمة داخل Docker
- تصور أوضح لفكرة التكامل عبر API
والأهم:
إذا قررت لاحقًا أبني شيء فعلي، أكون فاهم الأساس.
الخلاصة
تشغيل Ollama داخل Docker وربطها مع واجهة كان تجربة تعليمية بحتة.
ما كان الهدف استخدامها بشكل دائم، ولا الاعتماد عليها.
لكنها كانت تجربة مفيدة:
- علّمتني كيف تشتغل الأدوات
- خلتني أفهم القيود والإمكانيات
- وبنفس الوقت بدون أي التزام طويل
وإذا احتجتها مستقبلاً، أعرف من وين أبدأ.