跳转至内容

Ultralytics Docker 快速入门指南

Ultralytics Docker 软件包可视化

本指南全面介绍了如何为您的 Ultralytics 项目设置 Docker 环境。Docker 是一个用于在容器中开发、交付和运行应用程序的平台。它特别有利于确保软件始终以相同的方式运行,而无论部署在何处。有关更多详细信息,请访问 Docker Hub 上的 Ultralytics Docker 存储库。

Docker 镜像版本Docker 拉取次数

您将学到的内容

  • 设置支持 NVIDIA 的 Docker
  • 安装 Ultralytics Docker 镜像
  • 在具有 CPU 或 GPU 支持的 Docker 容器中运行 Ultralytics
  • 使用 Docker 显示服务器来显示Ultralytics 检测结果
  • 将本地目录挂载到容器中



观看: 如何开始使用 Docker | Ultralytics python 包在 Docker 中的使用演示 🎉


准备工作

  • 请确保您的系统上已安装 Docker。如果未安装,您可以从 Docker 网站下载并安装。
  • 确保您的系统已安装 NVIDIA GPU 和 NVIDIA 驱动程序。
  • 如果您使用的是 NVIDIA Jetson 设备,请确保您已安装适当的 JetPack 版本。有关更多详细信息,请参阅NVIDIA Jetson 指南

使用 NVIDIA 支持设置 Docker

首先,通过运行以下命令验证 NVIDIA 驱动程序是否已正确安装:

nvidia-smi

安装 NVIDIA Container Toolkit

现在,让我们安装 NVIDIA Container Toolkit 以在 Docker 容器中启用 GPU 支持:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
更新软件包列表并安装 nvidia-container-toolkit 软件包:

sudo apt-get update

安装最新版本的 nvidia-container-toolkit:

sudo apt-get install -y nvidia-container-toolkit \
  nvidia-container-toolkit-base libnvidia-container-tools \
  libnvidia-container1
可选:安装特定版本的 nvidia-container-toolkit

或者,您可以通过设置以下内容来安装特定版本的 nvidia-container-toolkit NVIDIA_CONTAINER_TOOLKIT_VERSION 环境变量:

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo apt-get install -y \
  nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo \
  | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

更新软件包列表并安装 nvidia-container-toolkit 软件包:

sudo dnf clean expire-cache
sudo dnf check-update
sudo dnf install \
  nvidia-container-toolkit \
  nvidia-container-toolkit-base \
  libnvidia-container-tools \
  libnvidia-container1
可选:安装特定版本的 nvidia-container-toolkit

或者,您可以通过设置以下内容来安装特定版本的 nvidia-container-toolkit NVIDIA_CONTAINER_TOOLKIT_VERSION 环境变量:

export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
sudo dnf install -y \
  nvidia-container-toolkit-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  nvidia-container-toolkit-base-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container-tools-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
  libnvidia-container1-${NVIDIA_CONTAINER_TOOLKIT_VERSION}
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

使用 Docker 验证 NVIDIA 运行时

运行 docker info | grep -i runtime 以确保 nvidia 出现在运行时列表中:

docker info | grep -i runtime

安装 Ultralytics Docker 镜像

Ultralytics 提供了多个针对各种平台和用例优化的 Docker 镜像:

  • Dockerfile: GPU 镜像,非常适合训练。
  • Dockerfile-arm64: 适用于 ARM64 架构,适合 Raspberry Pi 等设备。
  • Dockerfile-cpu: 仅 CPU 版本,适用于推理和非 GPU 环境。
  • Dockerfile-jetson-jetpack4: 针对运行 NVIDIA JetPack 4NVIDIA Jetson 设备进行了优化。
  • Dockerfile-jetson-jetpack5: 针对运行 NVIDIA JetPack 5NVIDIA Jetson 设备进行了优化。
  • Dockerfile-jetson-jetpack6: 针对运行 NVIDIA JetPack 6NVIDIA Jetson 设备进行了优化。
  • Dockerfile-jupyter: 用于在浏览器中使用 JupyterLab 进行交互式开发。
  • Dockerfile-python: 适用于轻量级应用程序的最小 Python 环境。
  • Dockerfile-conda: 包含 Miniconda3 和通过 Conda 安装的 Ultralytics 包。

要拉取最新的镜像,请执行以下操作:

# Set image name as a variable
t=ultralytics/ultralytics:latest

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull $t

在 Docker 容器中运行 Ultralytics

以下是如何执行 Ultralytics Docker 容器:

仅使用 CPU

# Run without GPU
sudo docker run -it --ipc=host $t

使用 GPU

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

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --runtime=nvidia --gpus '"device=2,3"' $t

字段 -it flag 分配一个伪 TTY 并保持 stdin 打开,允许您与容器交互。The --ipc=host flag 允许共享主机的 IPC 命名空间,这对于在进程之间共享内存至关重要。The --gpus flag 允许容器访问主机的 GPU。

关于文件可访问性的说明

要在容器中使用本地计算机上的文件,可以使用 Docker 卷:

# Mount a local directory into the container
sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container $t

替换 /path/on/host 是本地计算机上的目录路径, /path/in/container 是 Docker 容器内的目标路径。

在 Docker 容器中运行图形用户界面 (GUI) 应用程序

高度实验性 - 用户承担所有风险

以下说明是实验性的。与 Docker 容器共享 X11 socket 存在潜在的安全风险。因此,建议仅在受控环境中测试此解决方案。有关更多信息,请参阅以下关于如何使用的资源 xhost(1)(2).

Docker 主要用于容器化后台应用程序和 CLI 程序,但它也可以运行图形程序。在 Linux 世界中,两个主要的图形服务器处理图形显示:X11(也称为 X Window System)和 Wayland。在开始之前,必须确定您当前正在使用哪个图形服务器。运行以下命令以找出:

env | grep -E -i 'x11|xorg|wayland'

X11 或 Wayland 显示服务器的设置和配置不在此指南的范围内。如果上述命令未返回任何内容,那么您需要首先让其中一个为您的系统工作,然后再继续。

使用 GUI 运行 Docker 容器

示例

使用 GPU
If you're using [GPUs](#using-gpus), you can add the `--gpus all` flag to the command.
Docker 运行时标志
If your Docker installation does not use the `nvidia` runtime by default, you can add the `--runtime=nvidia` flag to the command.

如果您使用的是 X11,您可以运行以下命令以允许 Docker 容器访问 X11 socket:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host $t

此命令设置 DISPLAY 环境变量为主机的显示,挂载 X11 socket,并将 .Xauthority 文件映射到容器。The xhost +local:docker 命令允许 Docker 容器访问 X11 服务器。

对于 Wayland,请使用以下命令:

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
  --net=host -it --ipc=host $t

此命令设置 DISPLAY 环境变量为主机的显示,挂载 Wayland socket,并允许 Docker 容器访问 Wayland 服务器。

将 Docker 与 GUI 结合使用

现在您可以在 Docker 容器中显示图形应用程序。例如,您可以运行以下 CLI 命令 来可视化 YOLO11 模型预测

yolo predict model=yolo11n.pt show=True
测试

验证 Docker 组是否有权访问 X11 服务器的一个简单方法是运行一个带有 GUI 程序的容器,例如 xclockxeyes或者,您也可以在 Ultralytics Docker 容器中安装这些程序,以测试对 GNU-Linux 显示服务器的 X11 服务器的访问。如果遇到任何问题,请考虑设置环境变量 -e QT_DEBUG_PLUGINS=1设置此环境变量可以启用调试信息的输出,从而帮助进行故障排除。

完成 Docker GUI 后

撤销访问权限

在这两种情况下,完成后都不要忘记撤销 Docker 组的访问权限。

xhost -local:docker
想要直接在终端中查看图像结果吗?

请参阅以下关于使用终端查看图像结果的指南


您现已完成Ultralytics DockerUltralytics 使用Ultralytics 的配置,可随时利用其强大功能。如需其他安装方式,请参阅Ultralytics 文档

常见问题

如何使用 Docker 设置 Ultralytics?

要使用 Docker 设置 Ultralytics,首先请确保您的系统上已安装 Docker。如果您有 NVIDIA GPU,请安装 NVIDIA Container Toolkit 以启用 GPU 支持。然后,使用以下命令从 Docker Hub 拉取最新的 Ultralytics Docker 镜像:

sudo docker pull ultralytics/ultralytics:latest

有关详细步骤,请参阅我们的 Docker 快速入门指南。

对于机器学习项目,使用 Ultralytics Docker 镜像有哪些好处?

使用 Ultralytics Docker 镜像可确保不同机器上环境的一致性,从而复制相同的软件和依赖项。这对于以下情况尤其有用 跨团队协作,在各种硬件上运行模型,并保持可重复性。对于基于 GPU 的训练,Ultralytics 提供了优化的 Docker 镜像,例如 Dockerfile 用于通用 GPU 使用,以及 Dockerfile-jetson 用于 NVIDIA Jetson 设备。浏览 Ultralytics Docker Hub 了解更多详情。

如何在具有 GPU 支持的 Docker 容器中运行 Ultralytics YOLO?

首先,确保已安装并配置 NVIDIA Container Toolkit。然后,使用以下命令运行支持 GPU 的 Ultralytics YOLO:

sudo docker run -it --ipc=host --runtime=nvidia --gpus all ultralytics/ultralytics:latest # all GPUs

此命令设置一个具有 GPU 访问权限的 Docker 容器。有关更多详细信息,请参阅 Docker 快速入门指南。

如何在具有显示服务器的 Docker 容器中可视化 YOLO 预测结果?

要在 Docker 容器中使用 GUI 可视化 YOLO 预测结果,您需要允许 Docker 访问您的显示服务器。对于运行 X11 的系统,命令是:

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

对于运行 Wayland 的系统,请使用:

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

更多信息可以在在 Docker 容器中运行图形用户界面 (GUI) 应用程序部分找到。

我可以将本地目录挂载到 Ultralytics Docker 容器中吗?

是的,您可以使用 -v 标志:

sudo docker run -it --ipc=host --runtime=nvidia --gpus all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

替换 /path/on/host 与本地计算机上的目录,以及 /path/in/container 使用容器内的所需路径。此设置允许您在容器中使用本地文件。有关更多信息,请参阅 关于文件可访问性的说明 部分。



📅 2 年前创建 ✏️ 0 天前更新
glenn-jocheronuralpszrRizwanMunawarUltralyticsAssistantpderrengerSHOscarChenpicsalexlakshanthadFruchtzwerg94Burhan-Qjpedrofonseca_94@hotmail.com

评论