Docker-Schnellstartanleitung für Ultralytics
Dieser Leitfaden dient als umfassende Einführung in die Einrichtung einer Docker-Umgebung für Ihre Ultralytics-Projekte. Docker ist eine Plattform zum Entwickeln, Ausliefern und Ausführen von Anwendungen in Containern. Sie ist besonders nützlich, um sicherzustellen, dass die Software immer gleich läuft, unabhängig davon, wo sie eingesetzt wird. Weitere Informationen finden Sie im Ultralytics Docker Repository auf Docker Hub.
Was Sie lernen werden
- Einrichten von Docker mit NVIDIA-Unterstützung
- Installation von Ultralytics Docker Images
- Ausführen von Ultralytics in einem Docker-Container mit CPU- oder GPU-Unterstützung
- Verwenden eines Display Servers mit Docker zur Anzeige von Ultralytics-Erkennungsergebnissen
- Einbinden lokaler Verzeichnisse in den Container
Ansehen: Wie man mit Docker startet | Verwendung des Ultralytics Python-Pakets innerhalb einer Docker Live-Demo 🎉
Voraussetzungen
- Stellen Sie sicher, dass Docker auf Ihrem System installiert ist. Wenn nicht, können Sie es von der Docker-Website herunterladen und installieren.
- Stellen Sie sicher, dass Ihr System über eine NVIDIA GPU verfügt und NVIDIA-Treiber installiert sind.
Einrichten von Docker mit NVIDIA Unterstützung
Überprüfen Sie zunächst, ob die NVIDIA-Treiber ordnungsgemäß installiert sind, indem Sie Folgendes ausführen:
nvidia-smi
Installieren der NVIDIA Docker Runtime
Installieren wir nun die NVIDIA Docker Runtime, um die GPU-Unterstützung in Docker-Containern zu aktivieren:
# 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
Überprüfen der NVIDIA Runtime mit Docker
Ausführen docker info | grep -i runtime
um sicherzustellen, dass nvidia
in der Liste der Runtimes erscheint:
docker info | grep -i runtime
Installieren von Ultralytics Docker Images
Ultralytics bietet verschiedene Docker Images, die für unterschiedliche Plattformen und Anwendungsfälle optimiert sind:
- Dockerfile: GPU-Image, ideal für das Training.
- Dockerfile-arm64: Für ARM64-Architektur, geeignet für Geräte wie Raspberry Pi.
- Dockerfile-cpu: CPU-only Version für Inferenz und Umgebungen ohne GPU.
- Dockerfile-jetson-jetpack4: Optimiert für NVIDIA Jetson-Geräte, auf denen NVIDIA JetPack 4 läuft.
- Dockerfile-jetson-jetpack5: Optimiert für NVIDIA Jetson-Geräte, auf denen NVIDIA JetPack 5 läuft.
- Dockerfile-jetson-jetpack6: Optimiert für NVIDIA Jetson-Geräte, auf denen NVIDIA JetPack 6 läuft.
- Dockerfile-jupyter: Für die interaktive Entwicklung mit JupyterLab im Browser.
- Dockerfile-python: Minimale Python-Umgebung für schlanke Anwendungen.
- Dockerfile-conda: Beinhaltet Miniconda3 und das Ultralytics-Paket, das über Conda installiert wurde.
So ziehen Sie das neueste Image:
# Set image name as a variable
t=ultralytics/ultralytics:latest
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t
Ausführen von Ultralytics in einem Docker Container
So führen Sie den Ultralytics Docker-Container aus:
Verwendung nur der CPU
# Run without GPU
sudo docker run -it --ipc=host $t
Verwendung von GPUs
# 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
Die -it
Das Flag weist ein Pseudo-TTY zu und hält stdin offen, sodass Sie mit dem Container interagieren können. Das --ipc=host
Flag ermöglicht die gemeinsame Nutzung des IPC-Namespace des Hosts, was für die gemeinsame Nutzung von Speicher zwischen Prozessen unerlässlich ist. Das --gpus
Flag ermöglicht dem Container den Zugriff auf die GPUs des Hosts.
Hinweis zur Dateizugänglichkeit
Um mit Dateien auf Ihrem lokalen Rechner innerhalb des Containers zu arbeiten, können Sie Docker-Volumes verwenden:
# Mount a local directory into the container
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container $t
Ersetzen Sie /path/on/host
durch den Verzeichnispfad auf Ihrem lokalen Rechner und /path/in/container
durch den gewünschten Pfad innerhalb des Docker-Containers.
Ausführen von Anwendungen mit grafischer Benutzeroberfläche (GUI) in einem Docker Container
Höchst experimentell - Benutzer übernimmt das gesamte Risiko
Die folgenden Anweisungen sind experimentell. Das Teilen eines X11-Sockets mit einem Docker-Container birgt potenzielle Sicherheitsrisiken. Daher wird empfohlen, diese Lösung nur in einer kontrollierten Umgebung zu testen. Weitere Informationen finden Sie in diesen Ressourcen zur Verwendung von xhost
(1)(2).
Docker wird hauptsächlich verwendet, um Hintergrundanwendungen und CLI-Programme zu containerisieren, aber es kann auch grafische Programme ausführen. In der Linux-Welt gibt es zwei Hauptgrafikserver, die die grafische Darstellung übernehmen: X11 (auch bekannt als X Window System) und Wayland. Bevor Sie beginnen, ist es wichtig festzustellen, welchen Grafikserver Sie gerade verwenden. Führen Sie diesen Befehl aus, um dies herauszufinden:
env | grep -E -i 'x11|xorg|wayland'
Die Einrichtung und Konfiguration eines X11- oder Wayland-Display-Servers geht über den Rahmen dieser Anleitung hinaus. Wenn der obige Befehl nichts zurückgibt, müssen Sie zunächst eines von beiden für Ihr System zum Laufen bringen, bevor Sie fortfahren.
Ausführen eines Docker Containers mit einer GUI
Beispiel
GPUs verwenden
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Wenn Sie X11 verwenden, können Sie den folgenden Befehl ausführen, um dem Docker-Container den Zugriff auf den X11-Socket zu ermöglichen:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v ~/.Xauthority:/root/.Xauthority \
-it --ipc=host $t
Dieser Befehl setzt die DISPLAY
Umgebungsvariable auf die Anzeige des Hosts, mountet den X11-Socket und mappt die .Xauthority
Datei zum Container. Der xhost +local:docker
Befehl ermöglicht dem Docker-Container den Zugriff auf den X11-Server.
Verwenden Sie für Wayland den folgenden Befehl:
xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--net=host -it --ipc=host $t
Dieser Befehl setzt die DISPLAY
Umgebungsvariable auf die Anzeige des Hosts, mountet den Wayland-Socket und ermöglicht dem Docker-Container den Zugriff auf den Wayland-Server.
Verwenden von Docker mit einer GUI
Jetzt können Sie grafische Anwendungen innerhalb Ihres Docker-Containers anzeigen. Sie können beispielsweise den folgenden CLI-Befehl ausführen, um die Vorhersagen von einem YOLO11-Modell zu visualisieren:
yolo predict model=yolo11n.pt show=True
Testen
Eine einfache Möglichkeit, um zu überprüfen, ob die Docker-Gruppe Zugriff auf den X11-Server hat, ist das Ausführen eines Containers mit einem GUI-Programm wie xclock
oder xeyes
. Alternativ können Sie diese Programme auch im Ultralytics Docker-Container installieren, um den Zugriff auf den X11-Server Ihres GNU-Linux-Display-Servers zu testen. Wenn Probleme auftreten, sollten Sie die Umgebungsvariable -e QT_DEBUG_PLUGINS=1
setzen. Das Setzen dieser Umgebungsvariable ermöglicht die Ausgabe von Debugging-Informationen, was den Fehlerbehebungsprozess unterstützt.
Fertig mit Docker GUI
Zugriff widerrufen
Vergessen Sie in beiden Fällen nicht, den Zugriff der Docker-Gruppe zu widerrufen, wenn Sie fertig sind.
xhost -local:docker
Möchten Sie Bildergebnisse direkt im Terminal anzeigen?
Weitere Informationen finden Sie im folgenden Leitfaden zur Anzeige der Bildergebnisse mit einem Terminal.
Herzlichen Glückwunsch! Sie sind nun bereit, Ultralytics mit Docker zu verwenden und dessen leistungsstarke Funktionen zu nutzen. Für alternative Installationsmethoden können Sie gerne die Ultralytics Schnellstart-Dokumentation erkunden.
FAQ
Wie richte ich Ultralytics mit Docker ein?
Um Ultralytics mit Docker einzurichten, stellen Sie zunächst sicher, dass Docker auf Ihrem System installiert ist. Wenn Sie eine NVIDIA GPU haben, installieren Sie die NVIDIA Docker-Runtime, um die GPU-Unterstützung zu aktivieren. Ziehen Sie dann das neueste Ultralytics Docker-Image von Docker Hub mit dem folgenden Befehl:
sudo docker pull ultralytics/ultralytics:latest
Detaillierte Schritte finden Sie in unserem Docker Quickstart Guide.
Welche Vorteile bietet die Verwendung von Ultralytics Docker Images für Machine-Learning-Projekte?
Die Verwendung von Ultralytics Docker-Images gewährleistet eine konsistente Umgebung auf verschiedenen Rechnern, indem die gleiche Software und die gleichen Abhängigkeiten repliziert werden. Dies ist besonders nützlich für Zusammenarbeit über Teams hinweg, Modelle auf verschiedener Hardware auszuführen und die Reproduzierbarkeit zu gewährleisten. Für GPU-basiertes Training bietet Ultralytics optimierte Docker-Images wie Dockerfile
für die allgemeine GPU-Nutzung und Dockerfile-jetson
für NVIDIA Jetson-Geräte. Entdecken Sie Ultralytics Docker Hub für weitere Details.
Wie kann ich Ultralytics YOLO in einem Docker-Container mit GPU-Unterstützung ausführen?
Stellen Sie zunächst sicher, dass die NVIDIA Docker-Runtime installiert und konfiguriert ist. Verwenden Sie dann den folgenden Befehl, um Ultralytics YOLO mit GPU-Unterstützung auszuführen:
sudo docker run -it --ipc=host --gpus all ultralytics/ultralytics:latest
Dieser Befehl richtet einen Docker-Container mit GPU-Zugriff ein. Weitere Informationen finden Sie im Docker Quickstart Guide.
Wie visualisiere ich YOLO-Vorhersageergebnisse in einem Docker-Container mit einem Display Server?
Um YOLO-Vorhersageergebnisse mit einer GUI in einem Docker-Container zu visualisieren, müssen Sie Docker den Zugriff auf Ihren Display-Server erlauben. Für Systeme, die X11 ausführen, lautet der Befehl:
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
Für Systeme, die Wayland ausführen, verwenden Sie:
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
Weitere Informationen finden Sie im Abschnitt Grafische Benutzeroberflächenanwendungen (GUI) in einem Docker-Container ausführen.
Kann ich lokale Verzeichnisse in den Ultralytics Docker-Container einbinden?
Ja, Sie können lokale Verzeichnisse mit dem Flag -v
in den Ultralytics Docker-Container einbinden:
sudo docker run -it --ipc=host --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest
Ersetzen Sie /path/on/host
mit dem Verzeichnis auf Ihrem lokalen Rechner und /path/in/container
mit dem gewünschten Pfad innerhalb des Containers. Diese Einrichtung ermöglicht es Ihnen, mit Ihren lokalen Dateien innerhalb des Containers zu arbeiten. Weitere Informationen finden Sie im Abschnitt Hinweis zur Dateizugänglichkeit Abschnitt.