Ir al contenido

Guía de inicio rápido de Docker para Ultralytics

Ultralytics Paquete Docker Visual

Esta guía sirve como una introducción completa a la configuración de un entorno Docker para sus proyectos Ultralytics . Docker es una plataforma para desarrollar, enviar y ejecutar aplicaciones en contenedores. Es especialmente beneficioso para garantizar que el software se ejecute siempre igual, independientemente de dónde se despliegue. Para más detalles, visita el repositorio Docker de Ultralytics en Docker Hub.

Versión de imagen Docker Tirones de Docker

Lo que aprenderá

  • Configuración de Docker compatible con NVIDIA
  • Instalación de imágenes Docker en Ultralytics
  • Ejecución de Ultralytics en un contenedor Docker compatible con CPU o GPU
  • Uso de un servidor de visualización con Docker para mostrar los resultados de la detección de Ultralytics
  • Montaje de directorios locales en el contenedor

Requisitos previos

  • Asegúrese de que Docker está instalado en su sistema. Si no es así, puede descargarlo e instalarlo desde el sitio web de Docker.
  • Asegúrese de que su sistema dispone de una dirección NVIDIA GPU y de que están instalados los controladores NVIDIA .

Configuración de Docker con soporte NVIDIA

En primer lugar, compruebe que los controladores NVIDIA están correctamente instalados ejecutando:

nvidia-smi

Instalación de NVIDIA Docker Runtime

Ahora, vamos a instalar el NVIDIA Docker runtime para habilitar el soporte GPU en los contenedores Docker:

# Add NVIDIA package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(lsb_release -cs)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# Install NVIDIA Docker runtime
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# Restart Docker service to apply changes
sudo systemctl restart docker

Verifique NVIDIA Runtime con Docker

Ejecutar docker info | grep -i runtime para garantizar que nvidia aparece en la lista de tiempos de ejecución:

docker info | grep -i runtime

Instalación de imágenes Docker en Ultralytics

Ultralytics ofrece varias imágenes Docker optimizadas para diversas plataformas y casos de uso:

  • Dockerfile: imagen GPU , ideal para formación.
  • Dockerfile-arm64: Para arquitectura ARM64, adecuado para dispositivos como Raspberry Pi.
  • Dockerfile-cpu: CPU-sólo versión para entornos de inferencia y noGPU .
  • Dockerfile-jetson-jetpack4: Optimizado para dispositivos NVIDIA Jetson que ejecutan NVIDIA JetPack 4.
  • Dockerfile-jetson-jetpack5: Optimizado para dispositivos NVIDIA Jetson que ejecutan NVIDIA JetPack 5.
  • Dockerfile-jetson-jetpack6: Optimizado para dispositivos NVIDIA Jetson que ejecutan NVIDIA JetPack 6.
  • Dockerfile-jupyter: Para el desarrollo interactivo utilizando JupyterLab en el navegador.
  • Dockerfile-python: Entorno mínimo Python para aplicaciones ligeras.
  • Dockerfile-conda: Incluye Miniconda3 y el paquete Ultralytics instalado a través de Conda.

Para extraer la última imagen:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

Ejecución de Ultralytics en un contenedor Docker

A continuación se explica cómo ejecutar el contenedor Docker Ultralytics :

Utilizando únicamente el CPU

# Run without GPU
sudo docker run -it --ipc=host $t

Uso de GPU

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

En -it asigna un pseudo-TTY y mantiene stdin abierto, permitiéndole interactuar con el contenedor. La opción --ipc=host permite compartir el espacio de nombres IPC del host, esencial para compartir memoria entre procesos. La dirección --gpus permite al contenedor acceder a las GPU del host.

Ejecución de Ultralytics en un contenedor Docker

A continuación se explica cómo ejecutar el contenedor Docker Ultralytics :

Utilizando únicamente el CPU

# Run with all GPUs
sudo docker run -it --ipc=host $t

Uso de GPU

# Run with all GPUs
sudo docker run -it --ipc=host --gpus all $t

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --gpus '"device=2,3"' $t

En -it asigna un pseudo-TTY y mantiene stdin abierto, permitiéndole interactuar con el contenedor. La opción --ipc=host permite compartir el espacio de nombres IPC del host, esencial para compartir memoria entre procesos. La dirección --gpus permite al contenedor acceder a las GPU del host.

Nota sobre la accesibilidad de los ficheros

Para trabajar con archivos en su máquina local dentro del contenedor, puede utilizar volúmenes Docker:

# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t

Sustituir /path/on/host con la ruta del directorio en su máquina local y /path/in/container con la ruta deseada dentro del contenedor Docker.

Ejecutar aplicaciones de interfaz gráfica de usuario (GUI) en un contenedor Docker

Altamente experimental - El usuario asume todo el riesgo

Las siguientes instrucciones son experimentales. Compartir un socket X11 con un contenedor Docker plantea riesgos potenciales de seguridad. Por lo tanto, se recomienda probar esta solución sólo en un entorno controlado. Para obtener más información, consulte estos recursos sobre cómo utilizar xhost(1)(2).

Docker se utiliza principalmente para contenerizar aplicaciones en segundo plano y programas de CLI , pero también puede ejecutar programas gráficos. En el mundo Linux, dos servidores gráficos principales se encargan de la visualización gráfica: X11 (también conocido como X Window System) y Wayland. Antes de empezar, es esencial determinar qué servidor gráfico estás utilizando actualmente. Ejecuta este comando para averiguarlo:

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

La instalación y configuración de un servidor de visualización X11 o Wayland está fuera del alcance de esta guía. Si el comando anterior no devuelve nada, entonces usted tendrá que empezar por conseguir cualquiera de trabajo para su sistema antes de continuar.

Ejecutar un contenedor Docker con una GUI

Ejemplo

Utilizar GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.

Si utilizas X11, puedes ejecutar el siguiente comando para permitir que el contenedor Docker acceda al socket X11:

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

Este comando establece el DISPLAY a la pantalla del host, monta el socket X11 y asigna la variable de entorno .Xauthority al contenedor. La dirección xhost +local:docker permite al contenedor Docker acceder al servidor X11.

Para Wayland, utilice el siguiente comando:

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

Este comando establece el DISPLAY a la pantalla del host, monta el socket Wayland, y permite al contenedor Docker acceder al servidor Wayland.

Uso de Docker con una GUI

Ahora puede visualizar aplicaciones gráficas dentro de su contenedor Docker. Por ejemplo, puede ejecutar el siguiente comandoCLI para visualizar las predicciones de un modeloYOLO11 :

yolo predict model=yolo11n.pt show=True
Pruebas

Una forma sencilla de validar que el grupo Docker tiene acceso al servidor X11 es ejecutar un contenedor con un programa GUI como xclock o xeyes. Alternativamente, también puede instalar estos programas en el contenedor Docker Ultralytics para probar el acceso al servidor X11 de su servidor de visualización GNU-Linux. Si tiene algún problema, considere configurar la variable de entorno -e QT_DEBUG_PLUGINS=1. La configuración de esta variable de entorno permite la salida de información de depuración, lo que ayuda en el proceso de solución de problemas.

Cuando termine con Docker GUI

Revocar el acceso

En ambos casos, no olvides revocar el acceso del grupo Docker cuando hayas terminado.

xhost -local:docker
¿Desea ver los resultados de las imágenes directamente en el Terminal?

Consulte la siguiente guía sobre la visualización de los resultados de la imagen mediante un terminal


¡Enhorabuena! Ya está configurado para utilizar Ultralytics con Docker y listo para aprovechar sus potentes capacidades. Para métodos de instalación alternativos, no dudes en explorar la documentación de inicio rápido deUltralytics .

PREGUNTAS FRECUENTES

¿Cómo configuro Ultralytics con Docker?

Para configurar Ultralytics con Docker, asegúrese primero de que Docker está instalado en su sistema. Si tiene un NVIDIA GPU , instale el tiempo de ejecución de Docker NVIDIA para habilitar la compatibilidad con GPU . A continuación, extraiga la última imagen Docker Ultralytics de Docker Hub utilizando el siguiente comando:

sudo docker pull ultralytics/ultralytics:latest

Para obtener información detallada, consulte nuestra Guía de inicio rápido de Docker.

¿Cuáles son las ventajas de utilizar imágenes Docker de Ultralytics para proyectos de aprendizaje automático?

El uso de imágenes Docker Ultralytics garantiza un entorno coherente en diferentes máquinas, replicando el mismo software y las mismas dependencias. Esto es especialmente útil para colaboración entre equiposejecutar modelos en distintos tipos de hardware y mantener la reproducibilidad. Para el entrenamiento GPU, Ultralytics proporciona imágenes Docker optimizadas como Dockerfile para uso general GPU y Dockerfile-jetson para los dispositivos NVIDIA Jetson. Explorar Ultralytics Centro Docker para más detalles.

¿Cómo puedo ejecutar Ultralytics YOLO en un contenedor Docker compatible con GPU ?

En primer lugar, asegúrese de que NVIDIA Docker runtime está instalado y configurado. A continuación, utilice el siguiente comando para ejecutar Ultralytics YOLO con el apoyo de GPU :

sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest

Este comando configura un contenedor Docker con acceso a GPU . Para obtener más información, consulta la Guía de inicio rápido de Docker.

¿Cómo puedo visualizar los resultados de las predicciones de YOLO en un contenedor Docker con un servidor de visualización?

Para visualizar los resultados de la predicción de YOLO con una interfaz gráfica en un contenedor Docker, debe permitir que Docker acceda a su servidor de visualización. Para los sistemas que ejecutan X11, el comando es:

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

Para los sistemas que ejecutan Wayland, utilice:

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

Encontrará más información en la sección Ejecutar aplicaciones de interfaz gráfica de usuario (GUI) en un contenedor Docker.

¿Puedo montar directorios locales en el contenedor Docker Ultralytics ?

Sí, puede montar directorios locales en el contenedor Docker Ultralytics utilizando el comando -v bandera:

sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

Sustituir /path/on/host con el directorio de su máquina local y /path/in/container con la ruta deseada dentro del contenedor. Esta configuración le permite trabajar con sus archivos locales dentro del contenedor. Para más información, consulte la página Nota sobre la accesibilidad de los ficheros sección.

Creado hace 1 año ✏️ Actualizado hace 1 día

Comentarios