مقدمه
داکر دو روش برای اجرای محلی اپلیکیشنهای هوش مصنوعی ارائه میدهد: Docker Model Runner (DMR) و کانتینرهای معمولی. DMR روش ترجیحی است، زیرا مدلها را مستقیماً روی سختافزار میزبان اجرا میکند، نه داخل کانتینر، و این کار دسترسی بسیار بهتری به سختافزار شتابدهنده مانند GPU فراهم میکند.
چرا مدلها خارج از کانتینر اجرا میشوند
بیشتر سختافزارهای شتابدهنده هوش مصنوعی — GPU، NPU و TPU — به درایورها و SDKهای اختصاصی وابستهاند که پشتیبانی پایدار از آنها برای رانتایمهای کانتینری بسیار دشوار است. اگرچه GPUهای NVIDIA را میتوان با نصب NVIDIA Container Toolkit در اختیار کانتینرها قرار داد، این فرآیند پیچیده است و فقط به دستگاههای دارای قابلیت CUDA محدود میشود. با اجرای مدلها مستقیماً روی میزبان، DMR این محدودیت را بهطور کامل دور میزند، در حالی که همچنان با اکوسیستم گستردهتر داکر یکپارچه باقی میماند.
معماری
DMR بهعنوان یک فرآیند میزبان، جدا از Docker Engine اجرا میشود و یک لایه runtime قابلجایگزینی — در حال حاضر llama.cpp — را در بر میگیرد که مدلها را بارگذاری و اجرا میکند. این ابزار بر اساس تقاضا مدلها را بهصورت پویا بارگذاری و تخلیه کرده و آنها را از طریق endpointهای سازگار با OpenAI در دسترس قرار میدهد. کانتینرها میتوانند به این endpointها از طریق hostname ویژه model-runner.docker.internal دسترسی داشته باشند، در حالی که اپلیکیشنهای محلی یا راهدور میتوانند از طریق شبکه روی پورت 12434 به آنها دسترسی پیدا کنند.
نصب Docker Model Runner
DMR به نسخه Docker Desktop v4.41 یا جدیدتر نیاز دارد. میتوان آن را از صفحه Settings → Features in development در Docker Desktop، با فعال کردن گزینه Enable Docker Model Runner فعال کرد. پس از فعالسازی، وضعیت آن با دستور زیر قابل بررسی است:
docker model statusدریافت و تست مدلها
Docker Hub یک کاتالوگ گزیده از مدلهای تأییدشده را زیر namespace به نام ai میزبانی میکند. یک مدل را میتوان درست مانند یک ایمیج دانلود کرد:
docker model pull ai/gemma3:4B-Q4_K_Mمدلهای محلی را میتوان با docker model ls و docker model inspect فهرست و بررسی کرد. در پشت صحنه، مدلها بهعنوان نوع جدیدی از OCI artifact ذخیره و توزیع میشوند، به این معنا که میتوانند از رجیستریهای کانتینری موجود در کنار ایمیجها، SBOMها و Helm chartها استفاده کنند.
مدلها را میتوان بهسرعت از طریق یک نشست تعاملی CLI تست کرد:
docker model run ai/gemma3:4B-Q4_K_Mیا از طریق رابط چت داخلی Docker Desktop، که علاوه بر این، زمینه گفتگو را بین سؤالات مختلف حفظ میکند.
فراخوانی مستقیم API
DMR هم endpointهای بومی برای مدیریت مدل و هم endpointهای inference سازگار با OpenAI ارائه میدهد. یک درخواست چت را میتوان مستقیماً با curl ارسال کرد:
curl -s http://localhost:12434/engines/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "ai/gemma3:4B-Q4_K_M", "messages": [{"role": "user", "content": "How long is a day on Mars?"}]}'استفاده از Docker Model Runner با Compose
DMR از طریق یک افزونه اختصاصی به نام provider با Docker Compose یکپارچه میشود و امکان تعریف یک مدل بهعنوان یک وابستگی سرویس درجهیک را فراهم میکند:
dmr:
provider:
type: model
options:
model: ${LLM_MODEL_NAME}این ویژگی امکان ساخت یک استک کامل چتبات — یک فرانتاند، یک API بکاند و یک سرور مدل — را فراهم میکند که در آن بکاند بهصورت داخلی از طریق http://model-runner.docker.internal/engines/v1 با DMR ارتباط برقرار میکند، و همه با یک دستور واحد docker compose up مستقر میشوند.
استفاده از Docker Model Runner با اپلیکیشنهای شخصثالث
از آنجا که endpointهای inference داکر با OpenAI سازگارند، ابزارهای شخصثالثی مانند Open WebUI میتوانند مستقیماً به آن متصل شوند و یک رابط محلی شیک و شبیه به ChatGPT ارائه دهند، همراه با امکان تعویض مدل، حفظ تاریخچه گفتگو و system promptهای قابلتنظیم.
نتیجهگیری
Docker Model Runner اجرای هوش مصنوعی محلی را وارد همان گردشکاری میکند که توسعهدهندگان از قبل برای کانتینرها، Compose و رجیستریها استفاده میکنند، در حالی که مشکل دسترسی به سختافزار که بارهای کاری هوش مصنوعی داخل کانتینرها را محدود میکند نیز حل میشود. برای هرکسی که از قبل در اکوسیستم داکر سرمایهگذاری کرده، این ابزار مسیری طبیعی و یکپارچه برای اجرا و آزمایش مدلهای زبانی محلی فراهم میکند.