Безопасность корпоративного уровня: Соответствует ISO 27001 + SOC 2 Type I.

Link to this sectionРуководство по быстрому запуску Docker для Ultralytics#

Ultralytics Docker Package Visual

Это руководство представляет собой подробное введение в настройку среды Docker для твоих проектов Ultralytics. Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Она особенно полезна тем, что гарантирует одинаковую работу программного обеспечения независимо от места его развертывания. Для получения дополнительной информации посети репозиторий Ultralytics Docker на Docker Hub.

Версия образа Docker Скачивания Docker

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-smi

Link 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 update
sudo apt-get install -y nvidia-container-toolkit

Link 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.

ТегПлатформа и назначениеИсточник
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Образ Linux ARM64 CPU для Apple silicon, Raspberry Pi и других систем ARM64Dockerfile-arm64
latest-nvidia-arm64Linux ARM64 с поддержкой GPU NVIDIA для Jetson AGX Thor, DGX Spark, JetPack 7 и DGX OSDockerfile-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Образ Linux AMD64 CUDA для self-hosted GPU-раннера GitHub ActionsDockerfile-runner
latest-runner-cpuОбраз Linux AMD64 для self-hosted 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

Link to this sectionЗапуск Ultralytics в контейнере Docker#

Вот как выполнить контейнер Ultralytics Docker:

Link to this sectionИспользование только CPU#

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

Link 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.

Используй 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 не используется 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 на желаемый путь внутри контейнера. Эта настройка позволяет тебе работать со своими локальными файлами внутри контейнера. Дополнительную информацию см. в разделе Примечание о доступности файлов.

Комментарии