← رجوع

تجربتي في تشغيل Ollama داخل Docker

R

UNIXMAN

Jan 26, 2026

Article Image

تجربتي في تشغيل 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 وربطها مع واجهة كان تجربة تعليمية بحتة. ما كان الهدف استخدامها بشكل دائم، ولا الاعتماد عليها. لكنها كانت تجربة مفيدة:
  • علّمتني كيف تشتغل الأدوات
  • خلتني أفهم القيود والإمكانيات
  • وبنفس الوقت بدون أي التزام طويل
وإذا احتجتها مستقبلاً، أعرف من وين أبدأ.