Saltar al contenido

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

Ultralytics Paquete Docker Visual

Esta guía es una introducción completa a la configuración de un entorno Docker para tus proyectos en 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 la imagen Docker Tirones de Docker

Lo que aprenderás

  • Configurar Docker con soporte NVIDIA
  • Instalación de imágenes Docker Ultralytics
  • Ejecutar Ultralytics en un contenedor Docker con soporte CPU o GPU
  • Utilizar un servidor de visualización con Docker para mostrar los resultados de la detección Ultralytics
  • Montar directorios locales en el contenedor

Requisitos previos

  • Asegúrate de que Docker está instalado en tu sistema. Si no es así, puedes descargarlo e instalarlo desde el sitio web de Docker.
  • Asegúrate de que tu sistema tiene un NVIDIA GPU y de que están instalados los controladores NVIDIA .

Configurar Docker con soporte NVIDIA

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

nvidia-smi

Instalación de NVIDIA Docker Runtime

Ahora, vamos a instalar el tiempo de ejecución Docker NVIDIA para habilitar la compatibilidad con 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

Verifica NVIDIA Runtime con Docker

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

docker info | grep -i runtime

Instalar imágenes Docker de 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-versión sólo para entornos de inferencia y noGPU .
  • Dockerfile-jetson: Optimizado para los dispositivos NVIDIA Jetson.
  • Dockerfile-python: Entorno mínimo Python para aplicaciones ligeras.
  • Dockerfile-conda: Incluye Miniconda3 y el paquete Ultralytics instalado a través de Conda.

Para sacar 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

Ejecutar Ultralytics en un contenedor Docker

A continuación te explicamos cómo ejecutar el contenedor Docker Ultralytics :

Utilizando sólo el CPU

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

Uso de las 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éndote 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 GPUs del host.

Ejecutar Ultralytics en un contenedor Docker

A continuación te explicamos cómo ejecutar el contenedor Docker Ultralytics :

Utilizando sólo el CPU

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

Uso de las 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éndote 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 GPUs del host.

Nota sobre la accesibilidad de los archivos

Para trabajar con archivos de tu máquina local dentro del contenedor, puedes utilizar los 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

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

Ejecuta 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 tanto, se recomienda probar esta solución sólo en un entorno controlado. Para más información, consulta 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 queda fuera del alcance de esta guía. Si el comando anterior no devuelve nada, tendrás que empezar por hacer funcionar cualquiera de los dos en tu sistema antes de continuar.

Ejecutar un contenedor Docker con una GUI

Ejemplo

Utiliza GPUs
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 anfitrión, 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, utiliza 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 que el contenedor Docker acceda al servidor Wayland.

Utilizar Docker con una GUI

Ahora puedes visualizar aplicaciones gráficas dentro de tu contenedor Docker. Por ejemplo, puedes ejecutar el siguiente comandoCLI para visualizar las predicciones de un modelo YOLO11:

yolo predict model=yolo11n.pt show=True
Prueba

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 puedes instalar estos programas en el contenedor Docker Ultralytics para probar el acceso al servidor X11 de tu servidor de visualización GNU-Linux. Si tienes algún problema, considera la posibilidad de establecer la variable de entorno -e QT_DEBUG_PLUGINS=1. Establecer 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 termines con Docker GUI

Revocar el acceso

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

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

Consulta la siguiente guía para ver los resultados de la imagen utilizando un terminal


¡Enhorabuena! Ya estás configurado para utilizar Ultralytics con Docker y listo para aprovechar sus potentes capacidades. Para conocer 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úrate primero de que Docker está instalado en tu sistema. Si tienes un NVIDIA GPU , instala el tiempo de ejecución Docker NVIDIA para habilitar la compatibilidad con GPU . A continuación, extrae la última imagen Docker Ultralytics de Docker Hub utilizando el siguiente comando:

sudo docker pull ultralytics/ultralytics:latest

Para conocer los pasos detallados, consulta 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?

Utilizar imágenes Docker de Ultralytics garantiza un entorno coherente en diferentes máquinas, replicando el mismo software y dependencias. Esto es especialmente útil para colaborar entre equipos, ejecutar modelos en distintos equipos y mantener la reproducibilidad. Para la formación basada en GPU, Ultralytics proporciona imágenes Docker optimizadas como Dockerfile para uso general GPU y Dockerfile-jetson para los dispositivos NVIDIA Jetson. Explora Ultralytics Hub Docker para más detalles.

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

En primer lugar, asegúrate de que el tiempo de ejecución de Docker NVIDIA está instalado y configurado. A continuación, utiliza 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 más detalles, consulta la Guía de inicio rápido de Docker.

¿Cómo visualizo los resultados de la predicción de YOLO en un contenedor Docker con un servidor de visualización?

Para visualizar los resultados de la predicción YOLO con una GUI en un contenedor Docker, tienes que permitir que Docker acceda a tu 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, utiliza

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ás 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í, puedes 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

Sustituye /path/on/host con el directorio de tu máquina local y /path/in/container con la ruta deseada dentro del contenedor. Esta configuración te permite trabajar con tus archivos locales dentro del contenedor. Para más información, consulta la sección correspondiente de montaje de directorios locales.

📅 C reado hace 1 año ✏️ Actualizado hace 1 mes

Comentarios