Ultralytics Docker 快速入门指南
本指南全面介绍了如何为您的 Ultralytics 项目设置 Docker 环境。Docker 是一个用于在容器中开发、交付和运行应用程序的平台。它特别有利于确保软件始终以相同的方式运行,而无论部署在何处。有关更多详细信息,请访问 Docker Hub 上的 Ultralytics 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 )容器工具包
现在,让我们安装NVIDIA )容器工具包,在 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
sudo apt-get update
安装最新版本的nvidia
sudo apt-get install -y nvidia-container-toolkit \
nvidia-container-toolkit-base libnvidia-container-tools \
libnvidia-container1
可选:安装特定版本的nvidia
可以选择安装特定版本的nvidia,方法是设置 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:
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
可以选择安装特定版本的nvidia,方法是设置 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 4 的 NVIDIA Jetson 设备进行了优化。
- Dockerfile-jetson-jetpack5: 针对运行 NVIDIA JetPack 5 的 NVIDIA Jetson 设备进行了优化。
- Dockerfile-jetson-jetpack6: 针对运行 NVIDIA JetPack 6 的 NVIDIA 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 程序的容器,例如 xclock
或 xeyes
或者,您也可以在 Ultralytics Docker 容器中安装这些程序,以测试对 GNU-Linux 显示服务器的 X11 服务器的访问。如果遇到任何问题,请考虑设置环境变量 -e QT_DEBUG_PLUGINS=1
设置此环境变量可以启用调试信息的输出,从而帮助进行故障排除。
完成 Docker GUI 后
撤销访问权限
在这两种情况下,完成后都不要忘记撤销 Docker 组的访问权限。
xhost -local:docker
想要直接在终端中查看图像结果吗?
请参阅以下关于使用终端查看图像结果的指南
恭喜!您现在已设置好将 Ultralytics 与 Docker 结合使用,并可以利用其强大的功能。有关其他安装方法,请随时浏览 Ultralytics 快速入门文档。
常见问题
如何使用 Docker 设置 Ultralytics?
要使用 Docker 安装Ultralytics ,首先要确保系统已安装 Docker。如果你有NVIDIA )GPU处理器,请安装NVIDIA )容器工具包,以启用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 )容器工具包。然后,使用以下命令运行支持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
使用容器内的所需路径。此设置允许您在容器中使用本地文件。有关更多信息,请参阅 关于文件可访问性的说明 部分。