Guida rapida a Docker per Ultralytics
Questa guida è un'introduzione completa alla creazione di un ambiente Docker per i tuoi progetti Ultralytics . Docker è una piattaforma per sviluppare, spedire ed eseguire applicazioni in container. È particolarmente utile per garantire che il software venga eseguito sempre nello stesso modo, indipendentemente dal luogo in cui viene distribuito. Per maggiori dettagli, visita il repository Docker di Ultralytics su Docker Hub.
Cosa imparerai
- Configurazione di Docker con il supporto di NVIDIA
- Installare le immagini Docker di Ultralytics
- Eseguire Ultralytics in un contenitore Docker con il supporto di CPU o GPU
- Utilizzare un server di visualizzazione con Docker per mostrare i risultati del rilevamento di Ultralytics
- Montare le directory locali nel contenitore
Prerequisiti
- Assicurati che Docker sia installato sul tuo sistema. In caso contrario, puoi scaricarlo e installarlo dal sito web di Docker.
- Assicurati che il tuo sistema disponga di un driver NVIDIA GPU e NVIDIA .
Configurazione di Docker con il supporto di NVIDIA
Per prima cosa, verifica che i driver di NVIDIA siano installati correttamente eseguendo:
Installazione di NVIDIA Docker Runtime
Ora installiamo il runtime Docker NVIDIA per abilitare il supporto di GPU nei container 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 il runtime di NVIDIA con Docker
Corri docker info | grep -i runtime
per garantire che nvidia
appare nell'elenco dei runtime:
Installazione delle immagini Docker di Ultralytics
Ultralytics offre diverse immagini Docker ottimizzate per varie piattaforme e casi d'uso:
- Dockerfile: immagine GPU , ideale per la formazione.
- Dockerfile-arm64: Per l'architettura ARM64, adatto a dispositivi come Raspberry Pi.
- Dockerfile-cpu: CPU Versione solo per ambienti di inferenza e nonGPU .
- Dockerfile-jetson: Ottimizzato per i dispositivi NVIDIA Jetson.
- Dockerfile-python: Ambiente minimale Python per applicazioni leggere.
- Dockerfile-conda: include il pacchetto Miniconda3 e Ultralytics installato tramite Conda.
Per prelevare l'ultima immagine:
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t
Eseguire Ultralytics in un contenitore Docker
Ecco come eseguire il contenitore Docker Ultralytics :
Utilizzando solo la funzione CPU
Utilizzo delle 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
Il -it
assegna una pseudo-TTY e mantiene aperto lo stdin, permettendoti di interagire con il contenitore. Il flag --ipc=host
consente di condividere lo spazio dei nomi IPC dell'host, essenziale per condividere la memoria tra i processi. Il flag --gpus
permette al contenitore di accedere alle GPU dell'host.
Eseguire Ultralytics in un contenitore Docker
Ecco come eseguire il contenitore Docker Ultralytics :
Utilizzando solo la funzione CPU
Utilizzo delle 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
Il -it
assegna una pseudo-TTY e mantiene aperto lo stdin, permettendoti di interagire con il contenitore. Il flag --ipc=host
consente di condividere lo spazio dei nomi IPC dell'host, essenziale per condividere la memoria tra i processi. Il flag --gpus
permette al contenitore di accedere alle GPU dell'host.
Nota sull'accessibilità dei file
Per lavorare con i file sul tuo computer locale all'interno del container, puoi utilizzare i volumi Docker:
# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t
Sostituisci /path/on/host
con il percorso della directory sul computer locale e /path/in/container
con il percorso desiderato all'interno del contenitore Docker.
Eseguire applicazioni con interfaccia grafica (GUI) in un contenitore Docker
Altamente sperimentale - L'utente si assume tutti i rischi
Le seguenti istruzioni sono sperimentali. La condivisione di un socket X11 con un contenitore Docker comporta potenziali rischi per la sicurezza. Pertanto, si consiglia di testare questa soluzione solo in un ambiente controllato. Per maggiori informazioni, consulta queste risorse su come utilizzare xhost
(1)(2).
Docker viene utilizzato principalmente per containerizzare applicazioni in background e programmi CLI , ma può anche eseguire programmi grafici. Nel mondo Linux, due server grafici principali gestiscono la visualizzazione grafica: X11 (noto anche come X Window System) e Wayland. Prima di iniziare, è fondamentale determinare quale server grafico stai utilizzando. Esegui questo comando per scoprirlo:
L'installazione e la configurazione di un display server X11 o Wayland esula dagli scopi di questa guida. Se il comando precedente non restituisce nulla, allora dovrai iniziare a far funzionare uno dei due sistemi prima di continuare.
Eseguire un contenitore Docker con una GUI
Esempio
Usa le GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Se utilizzi X11, puoi eseguire il seguente comando per consentire al contenitore Docker di accedere 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
Questo comando imposta il valore DISPLAY
al display dell'host, monta il socket X11 e mappa la variabile d'ambiente .Xauthority
al contenitore. Il xhost +local:docker
permette al contenitore Docker di accedere al server X11.
Per Wayland, usa il seguente comando:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t
Questo comando imposta il valore DISPLAY
sul display dell'host, monta il socket Wayland e permette al contenitore Docker di accedere al server Wayland.
Usare Docker con una GUI
Now you can display graphical applications inside your Docker container. For example, you can run the following CLI command to visualize the predictions from a YOLO11 model:
Test
Un modo semplice per verificare che il gruppo Docker abbia accesso al server X11 è quello di eseguire un container con un programma GUI del tipo xclock
o xeyes
. In alternativa, puoi anche installare questi programmi nel contenitore Docker Ultralytics per testare l'accesso al server X11 del tuo display server GNU-Linux. Se dovessi riscontrare dei problemi, considera di impostare la variabile d'ambiente -e QT_DEBUG_PLUGINS=1
. L'impostazione di questa variabile d'ambiente consente l'emissione di informazioni di debug, aiutando il processo di risoluzione dei problemi.
Una volta terminato l'utilizzo della GUI di Docker
Revoca dell'accesso
In entrambi i casi, non dimenticare di revocare l'accesso al gruppo Docker quando hai finito.
Vuoi visualizzare i risultati delle immagini direttamente nel Terminale?
Consulta la seguente guida per visualizzare i risultati dell'immagine utilizzando un terminale
Congratulazioni! Ora sei configurato per utilizzare Ultralytics con Docker e sei pronto a sfruttare le sue potenti funzionalità. Per metodi di installazione alternativi, non esitare a consultare la documentazione di avvio rapido diUltralytics .
DOMANDE FREQUENTI
Come si configura Ultralytics con Docker?
Per configurare Ultralytics con Docker, assicurati innanzitutto che Docker sia installato sul tuo sistema. Se hai un NVIDIA GPU , installa il runtime Docker NVIDIA per abilitare il supporto GPU . Quindi, preleva l'ultima immagine Docker di Ultralytics da Docker Hub utilizzando il seguente comando:
Per i passaggi dettagliati, consulta la nostra Guida rapida a Docker.
What are the benefits of using Ultralytics Docker images for machine learning projects?
L'utilizzo delle immagini Docker di Ultralytics garantisce un ambiente coerente su macchine diverse, replicando lo stesso software e le stesse dipendenze. Questo è particolarmente utile per la collaborazione tra team, per l'esecuzione di modelli su hardware diversi e per mantenere la riproducibilità. Per la formazione basata su GPU, Ultralytics fornisce immagini Docker ottimizzate, come ad esempio Dockerfile
per l'uso generale di GPU e Dockerfile-jetson
per i dispositivi NVIDIA Jetson. Esplora Ultralytics Hub Docker per maggiori dettagli.
Come posso eseguire Ultralytics YOLO in un contenitore Docker con il supporto di GPU ?
Per prima cosa, assicurati che il runtime Docker NVIDIA sia installato e configurato. Quindi, usa il seguente comando per eseguire Ultralytics YOLO con il supporto di GPU :
Questo comando imposta un contenitore Docker con accesso a GPU . Per ulteriori dettagli, consulta la Guida rapida di Docker.
Come posso visualizzare i risultati delle previsioni di YOLO in un contenitore Docker con un server di visualizzazione?
Per visualizzare i risultati delle previsioni di YOLO con un'interfaccia grafica in un contenitore Docker, devi consentire a Docker di accedere al tuo server di visualizzazione. Per i sistemi che utilizzano X11, il comando è:
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
Per i sistemi che utilizzano Wayland, usa:
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
Maggiori informazioni sono disponibili nella sezione Eseguire applicazioni con interfaccia grafica (GUI) in un contenitore Docker.
Posso montare le directory locali nel contenitore Docker Ultralytics ?
Sì, puoi montare le directory locali nel contenitore Docker Ultralytics utilizzando il comando -v
bandiera:
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
Sostituisci /path/on/host
con la directory sul tuo computer locale e /path/in/container
con il percorso desiderato all'interno del contenitore. Questa configurazione ti permette di lavorare con i tuoi file locali all'interno del contenitore. Per maggiori informazioni, consulta la relativa sezione su montare le directory locali.