Ultralytics YOLO27:
Get Started

دليل البدء السريع لـ Docker من Ultralytics#

Ultralytics Docker Package Visual

يقدم هذا الدليل مقدمة شاملة لإعداد بيئة Docker لمشاريع Ultralytics. Docker منصة لتطوير التطبيقات وشحنها وتشغيلها في حاويات. وتفيد المنصة خصوصًا في ضمان عمل البرنامج بالطريقة نفسها دائمًا، بصرف النظر عن مكان نشره. لمزيد من التفاصيل، تفضل بزيارة مستودع Ultralytics على Docker Hub.

إصدار صورة Docker مرات سحب Docker

ما ستتعلمه#

  • إعداد Docker مع دعم NVIDIA
  • تثبيت صور Ultralytics لـ Docker
  • تشغيل Ultralytics في حاوية Docker مع دعم CPU أو GPU
  • استخدام خادم عرض مع Docker لإظهار نتائج الكشف من Ultralytics
  • تركيب الدلائل المحلية داخل الحاوية


شاهد: كيفية البدء باستخدام Docker | عرض توضيحي مباشر لاستخدام حزمة Ultralytics Python داخل Docker 🎉

المتطلبات الأساسية#

  • تأكد من تثبيت Docker على نظامك. وإن لم يكن مثبتًا، يمكنك تنزيله وتثبيته من موقع Docker.
  • لتسريع GPU، تأكد من أن نظامك يحتوي على GPU من NVIDIA وأن برامج تشغيل NVIDIA مثبتة. لا تتطلب صور CPU أجهزة NVIDIA.
  • إذا كنت تستخدم أجهزة NVIDIA Jetson، فتأكد من تثبيت إصدار JetPack المناسب. راجع دليل NVIDIA Jetson لمزيد من التفاصيل.

إعداد Docker مع دعم NVIDIA (اختياري)#

أولًا، تحقق من تثبيت برامج تشغيل NVIDIA على النحو الصحيح بتشغيل:

nvidia-smi

تثبيت NVIDIA Container Toolkit#

والآن، لنثبّت NVIDIA Container Toolkit لتمكين دعم GPU في حاويات Docker:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

حدّث قوائم الحزم وثبّت NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

التحقق من أجهزة CDI باستخدام Docker#

شغّل nvidia-ctk cdi list للتأكد من توفر أجهزة CDI الخاصة بـ GPU (تُنشئ خدمة nvidia-cdi-refresh التابعة لمجموعة الأدوات المواصفة وتحافظ عليها تلقائيًا في إصدارات مجموعة الأدوات >= 1.18):

nvidia-ctk cdi list

ينبغي أن تظهر إدخالات مثل nvidia.com/gpu=0 وnvidia.com/gpu=all. كما تظهر أجهزة CDI المكتشفة في docker info.

تثبيت صور Ultralytics لـ Docker#

تنشر Ultralytics الصور التالية على Docker Hub. وتُبنى كل صورة من ملف Dockerfile المرتبط بها بواسطة سير عمل النشر إلى Docker.

الوسمالمنصة والغرضالمصدر
latestLinux AMD64 مع CUDA لتدريب GPU والاستدلالDockerfile
latest-exportLinux AMD64 مع CUDA وتبعيات التصدير للتحويل وقياس الأداءDockerfile-export
latest-amdLinux AMD64 مع ROCm وMIGraphX لتدريب GPU من AMD والاستدلالDockerfile-amd
latest-pythonصورة Linux خفيفة لـ AMD64 وPython 3.14 للاستدلال على CPUDockerfile-python
latest-python-exportصورة Linux لـ AMD64 وPython 3.13 وCPU، تتضمن تبعيات التصديرDockerfile-python-export
latest-cpuصورة CPU لـ Linux AMD64 مع Bash بوصفه الأمر الافتراضيDockerfile-cpu
latest-jupyterصورة CPU لـ Linux AMD64 تتضمن JupyterLab ودفاتر دروس UltralyticsDockerfile-jupyter
latest-arm64صورة Linux لـ ARM64 وPython 3.13 وCPU، مخصصة لأجهزة Apple silicon وRaspberry Pi وأنظمة ARM64 الأخرىDockerfile-arm64
latest-nvidia-arm64Linux ARM64 لـ DGX Spark (DGX OS) وPyTorch على Thor (JetPack 7.1)؛ لا يدعم JetPack إصدار TensorRT المضمّنDockerfile-nvidia-arm64
latest-jetson-jetpack6Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بـ JetPack 6Dockerfile-jetson-jetpack6
latest-jetson-jetpack5Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بـ JetPack 5Dockerfile-jetson-jetpack5
latest-jetson-jetpack4Linux ARM64 لأجهزة NVIDIA Jetson التي تعمل بـ JetPack 4Dockerfile-jetson-jetpack4
latest-runnerصورة CUDA لـ Linux AMD64 لمُشغّل GPU مستضاف ذاتيًا لـ GitHub ActionsDockerfile-runner
latest-runner-cpuصورة Linux AMD64 لمُشغّل CPU مستضاف ذاتيًا لـ GitHub ActionsDockerfile-runner-cpu

تستخدم صور AMD64 لـ GPU (latest وlatest-export وlatest-runner) PyTorch 2.14 وCUDA 13.2. تحقّق من دعم برنامج التشغيل المضيف لـ CUDA باستخدام nvidia-smi قبل تشغيل هذه الصور؛ فتثبيت حاوية أحدث لا يحدّث برنامج التشغيل المضيف. أزال CUDA 13 دعم وحدات GPU من أجيال Maxwell وPascal وVolta، بما فيها Tesla P100 وV100. راجع ملاحظات إصدار CUDA من NVIDIA ومتطلبات توافق برامج التشغيل.

تستخدم صورة NVIDIA ARM64 إصدار NVIDIA PyTorch 26.08 مع CUDA 13.4 وTensorRT 11.2. ولا يمتد دعم PyTorch لـ Thor إلى TensorRT: إذ لا تدعم NVIDIA إصدار TensorRT 11.2 على JetPack. ولعمليات تصدير TensorRT على Jetson، استخدم بيئة تشغيل TensorRT 10.x المدعومة لإصدار JetPack لديك. اتبع متطلبات المنصة في دليل Jetson أو دليل DGX Spark. وتحتفظ صور JetPack 4 و5 و6 بحزمها البرمجية المنفصلة الخاصة بكل جهاز.

يتوفر ملف Dockerfile الخاص بـ Conda لإجراء عمليات البناء المحلية؛ وقد عُطّل النشر الآلي لـ latest-conda، لذا لا يتضمن وسم السجل هذا التحديثات.

استخدم latest-python-export لعمليات التصدير إلى LiteRT. تحتفظ صورة GPU latest-export بـ PyTorch 2.14 ولا تتضمن LiteRT، لأن تبعيتها الحالية تتطلب إصدارًا أقدم من PyTorch 2.14.

تستخدم صور Python وCPU وJupyter ومشغّل CPU الإصدار Python 3.14. وتستخدم صورة تصدير Python الأساس latest-python-3.13، المبني من Dockerfile-python نفسه باستخدام --build-arg PYTHON_VERSION=3.13، لأن TensorFlow وCoreML وPaddlePaddle لا تدعم Python 3.14 بعد.

تتبّع الوسوم التي تبدأ بـ latest أحدث إصدار منشور من بناء الفرع الرئيسي. وتستبدل الوسوم ذات الإصدارات البادئة latest بإصدار من Ultralytics، مثل VERSION أو VERSION-cpu أو VERSION-jetson-jetpack6. استخدم وسمًا ذا إصدار للحصول على بيئة قابلة لإعادة الإنتاج.

لسحب أحدث صورة:

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest

لبناء صورة بنفسك بدلًا من ذلك، استنسخ المستودع ومرّر ملف Dockerfile المطابق من الجدول أعلاه، مع استخدام جذر المستودع كسياق للبناء:

# Build the CPU image locally from docker/Dockerfile-cpu
sudo docker build -t ultralytics/ultralytics:latest-cpu -f docker/Dockerfile-cpu .

تشغيل Ultralytics في حاوية Docker#

إليك طريقة تشغيل حاوية Ultralytics لـ Docker:

استخدام CPU فقط#

# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpu

استخدام وحدات GPU#

# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest

يخصص الخيار -it طرفية زائفة (pseudo-TTY) ويبقي الإدخال القياسي مفتوحًا، ما يتيح لك التفاعل مع الحاوية. ويتيح الخيار --ipc=host مشاركة مساحة أسماء IPC الخاصة بالمضيف، وهو أمر أساسي لمشاركة الذاكرة بين العمليات. أما لوحدات GPU من NVIDIA، فيمنح الخيار --device nvidia.com/gpu=... إمكانية الوصول عبر CDI. ولوحدات GPU من AMD، تتيح الخيارات --device الوصول إلى برنامج تشغيل نواة GPU (/dev/kfd) وعُقد العرض (/dev/dri).

استخدم CDI بدلًا من `--gpus all`

على Linux، تتطلب طلبات أجهزة CDI إصدار Docker >= 28.2.0 (يكون CDI مفعّلًا افتراضيًا) وإصدار nvidia-container-toolkit >= 1.18 (إنشاء مواصفة CDI تلقائيًا). حدّث مضيفات Linux الأقدم قبل تشغيل حاويات GPU. وقد يؤدي الخيار القديم --gpus all إلى فقدان إمكانية الوصول إلى GPU (Failed to initialize NVML: Unknown Error) عند إعادة تحميل المضيف لـ systemd أثناء تحديثات الحزم الاعتيادية (nvidia-container-toolkit#48). تتضمن طلبات CDI --device عُقد الأجهزة في تهيئة الحاوية، لذا تحتفظ الحاويات طويلة التشغيل، مثل عمال التدريب أو مشغّلات CI، بإمكانية الوصول إلى GPU عبر عمليات إعادة التحميل.

يستخدم دعم GPU في Docker Desktop على Windows حاليًا --gpus all مع الواجهة الخلفية WSL 2، لأن أجهزة NVIDIA CDI غير متاحة هناك. ولا يستخدم Windows نظام systemd الخاص بـ Linux، لذا لا ينطبق عليه إخفاق إعادة تحميل البرنامج الخفي المذكور أعلاه.

ملاحظة بشأن إمكانية الوصول إلى الملفات#

للعمل على الملفات الموجودة على جهازك المحلي من داخل الحاوية، يمكنك استخدام وحدات تخزين Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

استبدل /path/on/host بمسار الدليل على جهازك المحلي، و/path/in/container بالمسار المطلوب داخل حاوية Docker.

الاحتفاظ بمخرجات التدريب#

تُحفظ مخرجات التدريب افتراضيًا في /ultralytics/runs/<task>/<name>/ داخل الحاوية. وإذا لم تركّب دليلًا من المضيف، فستُفقد المخرجات عند إزالة الحاوية.

للاحتفاظ بمخرجات التدريب:

# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
  yolo train model=yolo26n.pt data=coco8.yaml project=/w/runs

يحفظ هذا جميع مخرجات التدريب في ./runs على جهازك المضيف.

تشغيل تطبيقات واجهة المستخدم الرسومية (GUI) في حاوية Docker#

تجريبي للغاية - يتحمل المستخدم كامل المخاطر

التعليمات التالية تجريبية. تنطوي مشاركة مقبس X11 مع حاوية Docker على مخاطر أمنية محتملة. لذلك، يُوصى باختبار هذا الحل في بيئة محكومة فقط. لمزيد من المعلومات، راجع هذه الموارد لمعرفة كيفية استخدام xhost(1)(2).

يُستخدم Docker أساسًا لوضع التطبيقات التي تعمل في الخلفية وبرامج CLI داخل حاويات، لكنه يستطيع أيضًا تشغيل البرامج الرسومية. في عالم Linux، يتولى خادما عرض رسوميّان رئيسيان التعامل مع العرض الرسومي: X11 (المعروف أيضًا باسم نظام نوافذ X) وWayland. قبل البدء، من الضروري تحديد خادم الرسوميات الذي تستخدمه حاليًا. نفّذ هذا الأمر لمعرفة ذلك:

env | grep -E -i 'x11|xorg|wayland'

لا يشمل هذا الدليل إعداد خادم عرض X11 أو Wayland وتهيئته. إذا لم يُرجع الأمر أعلاه أي نتيجة، فستحتاج إلى البدء بتشغيل أحدهما على نظامك قبل المتابعة.

تشغيل حاوية Docker بواجهة رسومية#

مثال
استخدام وحدات GPU

إذا كنت تستخدم وحدات GPU، فيمكنك إضافة العلامة --device nvidia.com/gpu=all إلى الأمر.

إذا كنت تستخدم X11، فيمكنك تشغيل الأمر التالي للسماح لحاوية Docker بالوصول إلى مقبس X11:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

يضبط هذا الأمر متغير البيئة DISPLAY على شاشة المضيف، ويضمّن مقبس X11، ويربط الملف .Xauthority بالحاوية. ويسمح الأمر xhost +local:docker لحاوية Docker بالوصول إلى خادم X11.

استخدام Docker بواجهة رسومية#

تتضمن صور Ultralytics إصدار OpenCV بلا واجهة رسومية، لذا ثبّت أولاً إصدار OpenCV ذي الواجهة الرسومية ومكتبات النظام الخاصة به داخل الحاوية:

apt-get update && apt-get install -y --no-install-recommends libgl1 libglib2.0-0 libsm6
pip uninstall -y opencv-python-headless && pip install opencv-python

يمكنك الآن عرض التطبيقات الرسومية داخل حاوية Docker. على سبيل المثال، يمكنك تشغيل أمر CLI التالي لعرض التنبؤات الصادرة عن نموذج YOLO26:

yolo predict model=yolo26n.pt show=True
الاختبار

من الطرق البسيطة للتحقق من أن مجموعة Docker لديها إمكانية الوصول إلى خادم X11 تشغيل حاوية ببرنامج ذي واجهة رسومية مثل xclock أو xeyes. وبدلًا من ذلك، يمكنك تثبيت هذه البرامج في حاوية Ultralytics Docker لاختبار الوصول إلى خادم X11 الخاص بخادم العرض GNU-Linux لديك. إذا واجهت أي مشكلات، ففكّر في تعيين متغير البيئة -e QT_DEBUG_PLUGINS=1. يؤدي تعيين متغير البيئة هذا إلى تفعيل إخراج معلومات تصحيح الأخطاء، مما يساعد في استكشاف المشكلات وإصلاحها.

بعد الانتهاء من استخدام واجهة Docker الرسومية#

إلغاء الوصول

في كلتا الحالتين، لا تنسَ إلغاء إمكانية الوصول لمجموعة Docker عند الانتهاء.

xhost -local:docker
هل تريد عرض نتائج الصور مباشرةً في Terminal؟

راجع الدليل التالي حول عرض نتائج الصور باستخدام طرفية

أصبحت الآن جاهزًا لاستخدام Ultralytics مع Docker والاستفادة من إمكاناته. لاستضافة تطبيق الويب Ultralytics ذاتيًا، راجع دليل النشر المحلي. ولمعرفة طرق بديلة لتثبيت حزمة Python، راجع وثائق البدء السريع لـ Ultralytics.

الأسئلة الشائعة#

  • لإعداد Ultralytics باستخدام Docker، تأكد أولًا من تثبيت Docker على نظامك. إذا كانت لديك وحدة GPU من NVIDIA، فثبّت NVIDIA Container Toolkit لتمكين دعم GPU. ثم اسحب أحدث صورة Docker من Ultralytics من Docker Hub باستخدام الأمر التالي:

    sudo docker pull ultralytics/ultralytics:latest

    للاطلاع على الخطوات التفصيلية، راجع دليل البدء السريع لـ Docker.

  • يضمن استخدام صور Ultralytics Docker اتساق البيئة عبر الأجهزة المختلفة، من خلال تكرار البرامج والتبعيات نفسها. ويفيد ذلك خصوصًا في التعاون بين الفرق، وتشغيل النماذج على أجهزة متنوعة، والحفاظ على إمكانية إعادة إنتاج النتائج. استخدم latest للتدريب العام على وحدات GPU من NVIDIA، أو اختر الصورة المطابقة لإصدار JetPack الخاص بجهاز NVIDIA Jetson. راجع جدول الصور الكامل أو استكشف Docker Hub الخاص بـ Ultralytics.

  • تأكد أولًا من تثبيت NVIDIA Container Toolkit وتهيئته. ثم استخدم الأمر التالي لتشغيل Ultralytics YOLO مع دعم GPU:

    sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUs

    يُعدّ هذا الأمر حاوية Docker مع إمكانية الوصول إلى GPU. لمزيد من التفاصيل، راجع دليل البدء السريع لـ Docker.

  • لعرض نتائج تنبؤ YOLO بواجهة رسومية في حاوية Docker، عليك السماح لـ Docker بالوصول إلى خادم العرض. بالنسبة إلى الأنظمة التي تعمل بـ X11، يكون الأمر كما يلي:

    xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
      -v /tmp/.X11-unix:/tmp/.X11-unix \
      -v ~/.Xauthority:/root/.Xauthority \
      -it --ipc=host ultralytics/ultralytics:latest

    بالنسبة إلى الأنظمة التي تعمل بـ Wayland، استخدم:

    xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
      -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
      --net=host -it --ipc=host ultralytics/ultralytics:latest

    ثبّت إصدار OpenCV ذي الواجهة الرسومية داخل الحاوية قبل استخدام show=True، كما هو موضح في قسم تشغيل تطبيقات واجهة المستخدم الرسومية (GUI) في حاوية Docker.

  • نعم، يمكنك تركيب أدلة محلية داخل حاوية Ultralytics Docker باستخدام العلامة -v:

    sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

    استبدل /path/on/host بالدليل الموجود على جهازك المحلي، و/path/in/container بالمسار المطلوب داخل الحاوية. يتيح لك هذا الإعداد العمل على ملفاتك المحلية من داخل الحاوية. لمزيد من المعلومات، راجع قسم ملاحظة حول إمكانية الوصول إلى الملفات.

التعليقات