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 für die Entwicklung, den Versand und die Ausführung von Anwendungen in Containern. Es ist besonders vorteilhaft, um sicherzustellen, dass die Software immer gleich läuft, unabhängig davon, wo sie eingesetzt wird. Weitere Einzelheiten 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ührung von Ultralytics in einem Docker-Container mit Unterstützung von CPU oder GPU
- Verwendung eines Display-Servers mit Docker zur Anzeige von Ultralytics Erkennungsergebnissen
- Einbindung lokaler Verzeichnisse in den Container
Voraussetzungen
- Stellen Sie sicher, dass Docker auf Ihrem System installiert ist. Falls nicht, können Sie es von der Docker-Website herunterladen und installieren.
- Vergewissern Sie sich, dass Ihr System über ein NVIDIA GPU verfügt und NVIDIA Treiber installiert sind.
Einrichten von Docker mit NVIDIA Unterstützung
Vergewissern Sie sich zunächst, dass die Treiber von NVIDIA ordnungsgemäß installiert sind, indem Sie sie ausführen:
Installation von NVIDIA Docker Runtime
Installieren wir nun die NVIDIA Docker-Laufzeitumgebung, um die Unterstützung von GPU 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 Sie NVIDIA Runtime mit Docker
ausführen. docker info | grep -i runtime
um sicherzustellen, dass nvidia
erscheint in der Liste der Laufzeiten:
Installation von Ultralytics Docker Images
Ultralytics bietet mehrere Docker-Images, die für verschiedene Plattformen und Anwendungsfälle optimiert sind:
- Dockerfile: GPU image, ideal für Schulungen.
- Dockerfile-arm64: Für ARM64-Architektur, geeignet für Geräte wie Raspberry Pi.
- Dockerfile-cpu: CPU-only version for inference and non-GPU environments.
- Dockerfile-Jetson: Optimiert für NVIDIA Jetson-Geräte.
- Dockerfile-python: Minimale Python Umgebung für leichtgewichtige Anwendungen.
- Dockerfile-conda: Enthält Miniconda3 und das Ultralytics Paket, das über Conda installiert wird.
Zum Abrufen des neuesten Bildes:
# 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 Docker-Containern
So führen Sie den Ultralytics Docker-Container aus:
Nur die Verwendung der CPU
Einsatz 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
Flag weist ein Pseudo-TTY zu und hält stdin offen, so dass Sie mit dem Container interagieren können. Der --ipc=host
Flag ermöglicht die gemeinsame Nutzung des IPC-Namensraums des Hosts, was für die gemeinsame Nutzung von Speicher durch Prozesse unerlässlich ist. Die --gpus
Flagge erlaubt dem Container den Zugriff auf die GPUs des Hosts.
Ausführen von Ultralytics in Docker-Containern
So führen Sie den Ultralytics Docker-Container aus:
Nur die Verwendung der CPU
Einsatz 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
Flag weist ein Pseudo-TTY zu und hält stdin offen, so dass Sie mit dem Container interagieren können. Der --ipc=host
Flag ermöglicht die gemeinsame Nutzung des IPC-Namensraums des Hosts, was für die gemeinsame Nutzung von Speicher durch Prozesse unerlässlich ist. Die --gpus
Flagge erlaubt dem Container den Zugriff auf die GPUs des Hosts.
Hinweis zur Zugänglichkeit von Dateien
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
mit dem Verzeichnispfad auf Ihrem lokalen Rechner und /path/in/container
mit dem gewünschten Pfad innerhalb des Docker-Containers.
Ausführen von Anwendungen mit grafischer Benutzeroberfläche (GUI) in einem Docker-Container
Hochgradig experimentell - der Benutzer trägt das gesamte Risiko
Die folgenden Anweisungen sind experimentell. Die gemeinsame Nutzung eines X11-Sockets mit einem Docker-Container birgt potenzielle Sicherheitsrisiken. Es wird daher 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 in erster Linie zur Containerisierung von Hintergrundanwendungen und CLI Programmen verwendet, kann aber auch grafische Programme ausführen. In der Linux-Welt gibt es zwei wichtige Grafikserver für die grafische Darstellung: X11 (auch bekannt als das X Window System) und Wayland. Bevor Sie beginnen, müssen Sie unbedingt feststellen, welchen Grafikserver Sie derzeit verwenden. Führen Sie diesen Befehl aus, um das herauszufinden:
Die Einrichtung und Konfiguration eines X11- oder Wayland-Anzeigeservers liegt außerhalb des Rahmens dieses Handbuchs. Wenn der obige Befehl nichts zurückgibt, müssen Sie zunächst eines der beiden Systeme 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, damit der Docker-Container auf den X11-Socket zugreifen kann:
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 den Bildschirm des Hosts, hängt den X11-Socket ein und ordnet die .Xauthority
Datei in den Container. Die xhost +local:docker
ermöglicht es dem Docker-Container, auf den X11-Server zuzugreifen.
Für Wayland verwenden Sie 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 das Display des Hosts, hängt den Wayland-Socket ein und ermöglicht dem Docker-Container den Zugriff auf den Wayland-Server.
Docker mit einer GUI verwenden
Jetzt können Sie grafische Anwendungen innerhalb Ihres Docker-Containers anzeigen. Sie können zum Beispiel den folgenden CLI Befehl ausführen, um die Vorhersagen eines YOLO11 Modells zu visualisieren:
Prüfung
Eine einfache Möglichkeit zu überprüfen, ob die Docker-Gruppe Zugriff auf den X11-Server hat, ist die Ausführung eines Containers mit einem GUI-Programm wie xclock
oder xeyes
. Alternativ können Sie diese Programme auch in den Ultralytics Docker-Container installieren, um den Zugriff auf den X11-Server Ihres GNU-Linux-Anzeigeservers zu testen. Wenn Sie auf Probleme stoßen, können Sie die Umgebungsvariable -e QT_DEBUG_PLUGINS=1
. Das Setzen dieser Umgebungsvariablen ermöglicht die Ausgabe von Debugging-Informationen, die bei der Fehlersuche hilfreich sind.
Wenn Sie mit Docker GUI fertig sind
Zugang widerrufen
Vergessen Sie in beiden Fällen nicht, der Docker-Gruppe den Zugriff zu entziehen, wenn Sie fertig sind.
Sie möchten die Bildergebnisse direkt im Terminal anzeigen?
Beachten Sie die folgende Anleitung zur Anzeige der Bildergebnisse mit einem Terminal
Herzlichen Glückwunsch! Sie sind nun in der Lage, Ultralytics mit Docker zu verwenden und die Vorteile seiner leistungsstarken Funktionen zu nutzen. Alternative Installationsmethoden finden Sie in der Schnellstart-DokumentationUltralytics .
FAQ
Wie kann ich Ultralytics mit Docker einrichten?
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-Laufzeitumgebung, um die GPU -Unterstützung zu aktivieren. Ziehen Sie dann das neueste Ultralytics Docker-Image von Docker Hub mit dem folgenden Befehl:
Detaillierte Schritte finden Sie in unserem Docker Quickstart Guide.
Was sind die Vorteile der Verwendung von Ultralytics Docker-Images für Projekte des maschinellen Lernens?
Die Verwendung von Ultralytics Docker-Images gewährleistet eine konsistente Umgebung auf verschiedenen Rechnern und repliziert die gleiche Software und Abhängigkeiten. Dies ist besonders nützlich für die Zusammenarbeit zwischen Teams, die Ausführung von Modellen auf unterschiedlicher Hardware und die Aufrechterhaltung der Reproduzierbarkeit. Für GPU-basiertes Training bietet Ultralytics optimierte Docker-Images wie Dockerfile
für den allgemeinen Gebrauch GPU und Dockerfile-jetson
für NVIDIA Jetson-Geräte. Erkunden Sie Ultralytics Docker-Hub für weitere Einzelheiten.
Wie kann ich Ultralytics YOLO in einem Docker-Container mit GPU Unterstützung ausführen?
Stellen Sie zunächst sicher, dass die NVIDIA Docker-Laufzeitumgebung installiert und konfiguriert ist. Verwenden Sie dann den folgenden Befehl, um Ultralytics YOLO mit Unterstützung von GPU auszuführen:
Mit diesem Befehl wird ein Docker-Container mit GPU Zugriff eingerichtet. Weitere Einzelheiten finden Sie im Docker Quickstart Guide.
Wie visualisiere ich YOLO Vorhersageergebnisse in einem Docker-Container mit einem Display-Server?
Um YOLO Vorhersageergebnisse mit einer grafischen Benutzeroberfläche in einem Docker-Container zu visualisieren, müssen Sie Docker den Zugriff auf Ihren Anzeigeserver erlauben. Für Systeme, auf denen X11 läuft, 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, auf denen Wayland läuft, 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 Ausführen von Anwendungen mit grafischer Benutzeroberfläche (GUI) in einem Docker-Container.
Kann ich lokale Verzeichnisse in den Ultralytics Docker-Container einbinden?
Ja, Sie können lokale Verzeichnisse in den Ultralytics Docker-Container mounten, indem Sie die -v
Flagge:
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. Auf diese Weise können Sie mit Ihren lokalen Dateien innerhalb des Containers arbeiten. Weitere Informationen finden Sie in dem entsprechenden Abschnitt über Montage lokaler Verzeichnisse.