YOLO Vision 2026:

دليل التشغيل السريع لـ Docker الخاص بـ Ultralytics#

Ultralytics Docker Package Visual

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

Docker Image Version Docker Pulls

ما ستتعلمه#

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


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

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

  • تأكد من تثبيت Docker على نظامك. إذا لم يكن مثبتًا، يمكنك تنزيله وتثبيته من موقع Docker.
  • لتسريع وحدة معالجة الرسومات (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 لوحدة معالجة الرسومات (تقوم خدمة 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.

الوسم (Tag)المنصة والغرضالمصدر
latestLinux AMD64 مع CUDA للتدريب والاستدلال باستخدام GPUDockerfile
latest-exportLinux AMD64 مع CUDA وتبعيات التصدير للتحويل واختبار الأداءDockerfile-export
latest-pythonصورة Linux AMD64 خفيفة لـ Python من أجل الاستدلال عبر CPUDockerfile-python
latest-python-exportصورة Linux AMD64 CPU مع تبعيات التصديرDockerfile-python-export
latest-cpuصورة Linux AMD64 CPU مع استخدام Bash كأمر افتراضيDockerfile-cpu
latest-jupyterصورة Linux AMD64 CPU مع JupyterLab ودفاتر تعليمات UltralyticsDockerfile-jupyter
latest-arm64صورة وحدة المعالجة المركزية (CPU) لنظام Linux ARM64 لأجهزة Apple silicon، وRaspberry Pi، وغيرها من أنظمة ARM64Dockerfile-arm64
latest-nvidia-arm64Linux ARM64 مع دعم NVIDIA GPU لـ Jetson AGX Thor، وDGX Spark، وJetPack 7، وDGX OSDockerfile-nvidia-arm64
latest-jetson-jetpack6نظام Linux ARM64 لأجهزة NVIDIA Jetson التي تشغيل JetPack 6Dockerfile-jetson-jetpack6
latest-jetson-jetpack5نظام Linux ARM64 لأجهزة NVIDIA Jetson التي تشغيل JetPack 5Dockerfile-jetson-jetpack5
latest-jetson-jetpack4نظام Linux ARM64 لأجهزة NVIDIA Jetson التي تشغيل JetPack 4Dockerfile-jetson-jetpack4
latest-runnerصورة Linux AMD64 CUDA لمشغل (runner) GPU ذاتي الاستضافة على GitHub ActionsDockerfile-runner
latest-runner-cpuصورة Linux AMD64 لمشغل (runner) CPU ذاتي الاستضافة على GitHub ActionsDockerfile-runner-cpu

العلامات التي تبدأ بـ 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

باستخدام GPUs#

# 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) ويبقي مدخلات النظام (stdin) مفتوحة، مما يتيح لك التفاعل مع الحاوية. تتيح علامة --ipc=host مشاركة مساحة اسم IPC الخاصة بالمضيف، وهو أمر أساسي لمشاركة الذاكرة بين العمليات. تمنح علامة --device nvidia.com/gpu=... الحاوية إمكانية الوصول إلى وحدات معالجة الرسومات (GPUs) الخاصة بالمضيف من خلال CDI.

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

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

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

ملاحظة حول الوصول إلى الملفات#

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

# 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 Window) وWayland. قبل البدء، من الضروري تحديد خادم الرسومات الذي تستخدمه حاليًا. قم تشغيل هذا الأمر لمعرفة ذلك:

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

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

تشغيل حاوية Docker مع واجهة رسومية (GUI)#

مثال
استخدم GPUs

إذا كنت تستخدم وحدات معالجة الرسومات (GPUs)، يمكنك إضافة علامة --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 مع واجهة رسومية#

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

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

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

عند الانتهاء من Docker GUI#

إلغاء الوصول

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

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

أنت جاهز الآن لاستخدام Ultralytics مع Docker ومستعد للاستفادة من قدراته. لاستضافة تطبيق الويب Ultralytics بنفسك، راجع دليل النظام الأساسي المحلي (Platform On-Premise). لمعرفة طرق تثبيت حزم Python البديلة، راجع وثائق البدء السريع لـ Ultralytics.

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

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

    sudo docker pull ultralytics/ultralytics:latest

    للحصول على خطوات مفصلة، راجع دليل التشغيل السريع لـ Docker.

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

  • أولاً، تأكد من تثبيت وتكوين 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

    يمكن العثور على مزيد من المعلومات في قسم تشغيل تطبيقات واجهة المستخدم الرسومية (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 بالمسار المطلوب داخل الحاوية. يتيح لك هذا الإعداد العمل مع ملفاتك المحلية داخل الحاوية. لمزيد من المعلومات، راجع قسم ملاحظة حول إمكانية الوصول إلى الملفات.

التعليقات