Gu铆a de inicio r谩pido de Docker para Ultralytics
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.
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:
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:
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: Optimizado para 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 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
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
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:
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 :
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.
驴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:
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 de Ultralytics garantiza un entorno coherente en diferentes m谩quinas, replicando el mismo software y las mismas dependencias. Esto es especialmente 煤til para la colaboraci贸n entre equipos, la ejecuci贸n de modelos en distintos equipos y el mantenimiento de 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. 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 :
Este comando configura un contenedor Docker con acceso a GPU . Para obtener m谩s informaci贸n, consulte 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 secci贸n correspondiente de montaje de directorios locales.