Link to this sectionРуководство по быстрому запуску Docker для Ultralytics#
Это руководство представляет собой подробное введение в настройку среды Docker для твоих проектов Ultralytics. Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Она особенно полезна тем, что гарантирует одинаковую работу программного обеспечения независимо от места его развертывания. Для получения дополнительной информации посети репозиторий Ultralytics Docker на Docker Hub.
Link to this sectionЧему ты научишься#
- Настройка Docker с поддержкой NVIDIA
- Установка Docker-образов Ultralytics
- Запуск Ultralytics в контейнере Docker с поддержкой CPU или GPU
- Использование графического сервера с Docker для отображения результатов детектирования Ultralytics
- Монтирование локальных каталогов в контейнер
Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉
Link to this sectionПредварительные требования#
- Убедись, что Docker установлен в твоей системе. Если нет, ты можешь скачать и установить его с веб-сайта Docker.
- Для ускорения на GPU убедись, что на твоей системе установлены GPU NVIDIA и драйверы NVIDIA. Образы для CPU не требуют оборудования NVIDIA.
- Если ты используешь устройства NVIDIA Jetson, убедись, что у тебя установлена подходящая версия JetPack. Более подробную информацию ищи в NVIDIA Jetson guide.
Link to this sectionНастройка Docker с поддержкой NVIDIA (опционально)#
Сначала проверь, правильно ли установлены драйверы NVIDIA, выполнив:
nvidia-smiLink to this sectionУстановка 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 updatesudo apt-get install -y nvidia-container-toolkitLink to this sectionПроверь CDI-устройства с помощью Docker#
Выполни nvidia-ctk cdi list, чтобы убедиться в доступности GPU CDI-устройств (сервис nvidia-cdi-refresh из набора инструментов автоматически создает и обновляет спецификацию в версиях toolkit >= 1.18):
nvidia-ctk cdi listТы должен увидеть записи вроде nvidia.com/gpu=0 и nvidia.com/gpu=all. Обнаруженные CDI-устройства также отображаются в docker info.
Link to this sectionУстановка Docker-образов Ultralytics#
Ultralytics публикует следующие образы на Docker Hub. Каждый образ собирается из соответствующего Dockerfile с помощью рабочего процесса публикации Docker.
| Тег | Платформа и назначение | Источник |
|---|---|---|
latest | Linux AMD64 с CUDA для обучения и инференса на GPU | Dockerfile |
latest-export | Linux AMD64 с CUDA и зависимостями экспорта для конвертации и бенчмаркинга | Dockerfile-export |
latest-python | Легковесный образ Linux AMD64 Python для инференса на CPU | Dockerfile-python |
latest-python-export | Образ Linux AMD64 CPU с зависимостями экспорта | Dockerfile-python-export |
latest-cpu | Образ Linux AMD64 CPU с Bash в качестве команды по умолчанию | Dockerfile-cpu |
latest-jupyter | Образ Linux AMD64 CPU с JupyterLab и обучающими ноутбуками Ultralytics | Dockerfile-jupyter |
latest-arm64 | Образ Linux ARM64 CPU для Apple silicon, Raspberry Pi и других систем ARM64 | Dockerfile-arm64 |
latest-nvidia-arm64 | Linux ARM64 с поддержкой GPU NVIDIA для Jetson AGX Thor, DGX Spark, JetPack 7 и DGX OS | Dockerfile-nvidia-arm64 |
latest-jetson-jetpack6 | Linux ARM64 для устройств NVIDIA Jetson под управлением JetPack 6 | Dockerfile-jetson-jetpack6 |
latest-jetson-jetpack5 | Linux ARM64 для устройств NVIDIA Jetson под управлением JetPack 5 | Dockerfile-jetson-jetpack5 |
latest-jetson-jetpack4 | Linux ARM64 для устройств NVIDIA Jetson под управлением JetPack 4 | Dockerfile-jetson-jetpack4 |
latest-runner | Образ Linux AMD64 CUDA для self-hosted GPU-раннера GitHub Actions | Dockerfile-runner |
latest-runner-cpu | Образ Linux AMD64 для self-hosted CPU-раннера GitHub Actions | Dockerfile-runner-cpu |
Теги, начинающиеся с latest, отслеживают наиболее свежую сборку основной ветки. Версионные теги заменяют префикс latest на релиз Ultralytics, например VERSION, VERSION-cpu или VERSION-jetson-jetpack6. Используй версионный тег для воспроизводимой среды.
Чтобы скачать последний образ:
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latestLink to this sectionЗапуск Ultralytics в контейнере Docker#
Вот как выполнить контейнер Ultralytics Docker:
Link to this sectionИспользование только CPU#
# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpuLink to this sectionИспользование 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 назначает псевдо-TTY и оставляет stdin открытым, позволяя взаимодействовать с контейнером. Флаг --ipc=host включает совместное использование IPC-пространства имен хоста, что необходимо для обмена памятью между процессами. Флаг --device nvidia.com/gpu=... предоставляет контейнеру доступ к GPU хоста через CDI.
В 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 не используется Linux systemd, поэтому указанная выше ошибка при перезагрузке демона там не возникает.
Link to this sectionПримечание о доступности файлов#
Чтобы работать с файлами на твоем локальном компьютере внутри контейнера, ты можешь использовать тома 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.
Link to this sectionСохранение результатов обучения#
Результаты обучения по умолчанию сохраняются в /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 на твоем хост-компьютере.
Link to this sectionЗапуск приложений с графическим интерфейсом (GUI) в контейнере Docker#
Следующие инструкции являются экспериментальными. Предоставление общего доступа к сокету X11 контейнеру Docker сопряжено с потенциальными рисками безопасности. Поэтому рекомендуется тестировать это решение только в контролируемой среде. Для получения дополнительной информации обратись к этим ресурсам о том, как использовать xhost(1)(2).
Docker в основном используется для контейнеризации фоновых приложений и программ CLI, но он также может запускать графические программы. В мире Linux двумя основными графическими серверами, обрабатывающими графическое отображение, являются X11 (также известный как X Window System) и Wayland. Перед началом важно определить, какой графический сервер ты используешь в данный момент. Запусти эту команду, чтобы узнать:
env | grep -E -i 'x11|xorg|wayland'Настройка и конфигурирование графического сервера X11 или Wayland выходит за рамки этого руководства. Если приведенная выше команда ничего не возвращает, тебе нужно будет начать с того, чтобы заставить один из них работать в твоей системе, прежде чем продолжать.
Link to this sectionЗапуск контейнера Docker с GUI#
Использовать 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.
Link to this sectionИспользование Docker с GUI#
Теперь ты можешь отображать графические приложения внутри своего контейнера Docker. Например, ты можешь запустить следующую команду CLI, чтобы визуализировать предсказания модели YOLO26:
yolo predict model=yolo26n.pt show=TrueТестирование
Простой способ убедиться, что у группы Docker есть доступ к X11-серверу, — запустить контейнер с графической программой, такой как xclock или xeyes. Кроме того, ты можешь установить эти программы в Docker-контейнер Ultralytics, чтобы проверить доступ к X11-серверу твоего дисплейного сервера GNU-Linux. Если возникнут какие-либо проблемы, попробуй задать переменную окружения -e QT_DEBUG_PLUGINS=1. Установка этой переменной окружения включает вывод отладочной информации, что поможет тебе в процессе поиска и устранения неисправностей.
Link to this sectionКогда закончишь работу с GUI в Docker#
В обоих случаях не забудь отозвать доступ у группы Docker, когда закончишь.
xhost -local:dockerХочешь просматривать результаты изображений прямо в терминале?
Обратись к следующему руководству по просмотру результатов изображений с помощью терминала
Теперь всё настроено для работы с Ultralytics через Docker, и ты готов использовать его возможности. Чтобы запустить веб-приложение Ultralytics на собственном сервере, ознакомься с руководством Platform On-Premise. Альтернативные методы установки пакета Python описаны в документации по быстрому старту Ultralytics.
Link to this sectionFAQ#
Link to this sectionКак мне настроить Ultralytics с Docker?#
Чтобы настроить Ultralytics с Docker, сначала убедись, что Docker установлен в твоей системе. Если у тебя есть GPU NVIDIA, установи NVIDIA Container Toolkit для активации поддержки GPU. Затем скачай последний образ Ultralytics Docker с Docker Hub, используя следующую команду:
sudo docker pull ultralytics/ultralytics:latestДля получения подробных шагов обратись к нашему руководству по быстрому запуску Docker.
Link to this sectionКаковы преимущества использования Docker-образов Ultralytics для проектов машинного обучения?#
Использование Docker-образов Ultralytics обеспечивает согласованную среду на разных машинах, воспроизводя идентичное ПО и зависимости. Это особенно полезно для сотрудничества в командах, запуска моделей на различном оборудовании и обеспечения воспроизводимости. Используй latest для стандартного обучения на GPU NVIDIA или выбери образ, соответствующий твоей версии JetPack для устройства NVIDIA Jetson. Смотри полную таблицу образов или изучи Ultralytics Docker Hub.
Link to this sectionКак я могу запустить Ultralytics YOLO в контейнере Docker с поддержкой GPU?#
Сначала убедись, что 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.
Link to this sectionКак мне визуализировать результаты предсказаний YOLO в контейнере Docker с графическим сервером?#
Чтобы визуализировать результаты предсказаний YOLO с помощью GUI в контейнере 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.
Link to this sectionМогу ли я монтировать локальные каталоги в контейнер Ultralytics 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 на желаемый путь внутри контейнера. Эта настройка позволяет тебе работать со своими локальными файлами внутри контейнера. Дополнительную информацию см. в разделе Примечание о доступности файлов.