在 Docker 中安装 Zivid
在 Docker 容器中安装 Zivid 软件的说明取决于您的操作系统和硬件。请按照适用于您的设置的说明进行操作。
Windows
在 Windows 上,Docker Desktop 通过 WSL 后端运行 Linux 容器。
Intel
The Intel path uses the OpenCL compute backend. On WSL, OpenCL is not available to Docker containers, so the OpenCL backend cannot be used on Windows. Use the CUDA backend instead, as shown in the NVIDIA dropdown. This requires an NVIDIA GPU, so running Zivid in Docker on Windows is not possible with an Intel GPU.
NVIDIA
在 WSL 上,NVIDIA GPU 驱动程序会向 Docker 容器提供 CUDA,因此使用的是 CUDA 后端。
先决条件
已启用基于 WSL 2 引擎的 Docker Desktop 。
配备最新驱动程序的 NVIDIA GPU,可通过运行
nvidia-smi进行验证。
下载以下内容 Dockerfile ,以获得在 Ubuntu 24.04 上使用 Zivid 软件的最小 Docker 镜像。
FROM nvidia/cuda:12.5.1-runtime-ubuntu24.04
RUN apt-get update && apt-get install --assume-yes \
wget
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
RUN wget --quiet \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-cuda_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-tools_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-genicam_2.18.0+1b44dbef-1_amd64.deb
RUN apt-get update
RUN apt-get install ./*.deb --assume-yes && rm ./*.deb
导航到放置 Dockerfile 的目录,然后在 Windows 终端中运行以下指令来构建和运行容器
docker build -t <image> .
docker run --interactive --tty --gpus all <image>
其中 <image> 是您选择的镜像名称,例如 zivid 。该镜像已针对 CUDA 后端进行了设置,因此无需进一步配置。
要验证 Zivid SDK 是否正常工作,请通过 IP 地址连接相机。Docker Desktop 在 WSL 虚拟机中运行容器,而该虚拟机无法通过 mDNS 发现连接到局域网中的相机,因此在 Windows 上 ZividListCameras 无法找到相机。通过 IP 地址直接连接则可以正常工作。
创建一个连接到相机的小程序,将 172.28.60.5 替换为您相机的 IP 地址。
#include <Zivid/Zivid.h>
#include <iostream>
int main()
{
Zivid::Application zivid;
auto camera = zivid.connectCamera(Zivid::CameraAddress{ "172.28.60.5" });
std::cout << "Connected to " << camera.info().serialNumber() << std::endl;
}
在容器内构建并运行该程序。如果它打印出相机序列号,则说明 Zivid SDK 正常工作。有关通过 IP 地址或主机名进行连接的更多信息,请参阅 连接到 Docker 中的相机 。
备注
一台相机一次只能被一个位置连接。在从容器连接之前,请先在 Zivid Studio 或任何其他应用程序中断开相机连接。否则,连接将在等待相机响应时超时。
Ubuntu
先决条件
Intel
如果您使用的是英特尔显卡,则主机上应该已经安装了英特尔 GPU 驱动程序。如果没有,请下载并安装 Intel drivers 。
下载以下内容 Dockerfile ,以获得在 Ubuntu 24.04 上使用 Zivid 软件的最小 Docker 镜像。
FROM ubuntu:24.04
RUN apt-get update && apt-get install --assume-yes \
wget \
intel-opencl-icd
RUN wget --quiet \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-opencl_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-tools_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-genicam_2.18.0+1b44dbef-1_amd64.deb
RUN apt-get update
RUN apt-get install ./*.deb --assume-yes && rm ./*.deb
导航到放置 Dockerfile 的目录,然后通过运行以下指令来构建和运行容器
sudo docker build -t <image> .
sudo docker run --interactive --tty --device=/dev/dri --network=host <image>
其中 <image> 是您选择的镜像名称,例如 zivid 。此时您应处于安装了 Zivid 的 Ubuntu 交互式会话中。 --network=host 参数使容器可以发现主机网络上的相机。
NVIDIA
首先,如果未安装 GPU 的驱动程序,请在主机上安装 NVIDIA 驱动程序 。然后在主机上安装 NVIDIA Container Toolkit。
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
sudo apt-get install -y nvidia-container-toolkit
然后配置 Docker 以使用 NVIDIA Container Runtime。
sudo nvidia-ctk runtime configure --runtime=docker
重新启动 Docker daemon。
sudo systemctl restart docker
现在您应该能够通过 Docker 访问您的 NVIDIA GPU。下载以下内容 Dockerfile ,以获取在 Ubuntu 24.04 上使用 Zivid 软件构建的最小 Docker 镜像。
FROM nvidia/cuda:12.5.1-runtime-ubuntu24.04
RUN apt-get update && apt-get install --assume-yes \
wget
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
RUN wget --quiet \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-cuda_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-tools_2.18.0+1b44dbef-1_amd64.deb \
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u24/amd64/zivid-genicam_2.18.0+1b44dbef-1_amd64.deb
RUN apt-get update
RUN apt-get install ./*.deb --assume-yes && rm ./*.deb
导航到放置 Dockerfile 的目录,然后通过运行以下指令来构建和运行容器
sudo docker build -t <image> .
sudo docker run --interactive --tty --device=/dev/dri --gpus=all --network=host <image>
其中 <image> 是您选择的镜像名称,例如 zivid 。此时您应处于安装了 Zivid 的 Ubuntu 交互式会话中。 --network=host 参数使容器可以发现主机网络上的相机。
要验证 Zivid SDK 是否正常工作,请在容器内运行以下内容。
ZividListCameras
如果没有错误,则说明 Zivid SDK 在 Docker 容器中正常工作。
备注
默认情况下,您只能找到具有静态 IP 地址 172.28.60.5 的相机。如果您需要连接一个或多个自定义 IP 地址的相机,请查看 连接到 Docker 中的相机 。
Jetson Linux
先决条件
JetPack(其中已捆绑 NVIDIA Container Runtime)。
备注
由于 NVIDIA Container Runtime 已随 JetPack 捆绑提供,因此无需安装 NVIDIA Container Toolkit。
本页提供的 Dockerfile 针对 x86 Ubuntu,与 ARM64 架构的 Jetson 不兼容。
根据您的 JetPack 版本选择基础镜像:
JetPack 5 和 JetPack 6:使用 NVIDIA L4T Base (
nvcr.io/nvidia/l4t-base)。选择与您已安装的 JetPack 相匹配的标签,您可以通过运行cat /etc/nv_tegra_release来查看(例如,R36 (release), REVISION: 3.0对应标签r36.3.0)。JetPack 7 and later: use the same NVIDIA CUDA containers (
nvcr.io/nvidia/cuda) as the NVIDIA dropdown.
一个最小化的 Dockerfile 如下所示,其中 <base-image> 是上面选择的基础镜像。
FROM <base-image>
RUN apt-get update && apt-get install --assume-yes \\
wget
RUN wget --quiet \\
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u22/arm64/zivid-cuda_2.18.0+1b44dbef-1_arm64.deb \\
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u22/arm64/zivid-tools_2.18.0+1b44dbef-1_arm64.deb \\
https://downloads.zivid.com/sdk/releases/2.18.0+1b44dbef-1/u22/arm64/zivid-genicam_2.18.0+1b44dbef-1_arm64.deb
RUN apt-get update
RUN apt-get install ./*.deb --assume-yes && rm ./*.deb
请将软件包 URL 中的 Ubuntu 版本( u22 或 u24 )与您的 JetPack 版本相匹配,具体列表参见 在 Jetson Linux 上安装 Zivid 。
通过运行以下指令来运行容器
sudo docker run --interactive --tty --runtime=nvidia --gpus=all --network=host <image>
其中 <image> 是您选择的镜像名称,例如 zivid 。 --network=host 参数使容器可以发现主机网络上的相机。
要验证 Zivid SDK 是否正常工作,请在容器内运行以下内容。
ZividListCameras
如果没有错误,则说明 Zivid SDK 在 Docker 容器中正常工作。
版本历史
SDK |
变更内容 |
|---|---|
2.18.0 |
新增支持通过 WSL 后端配合 CUDA 计算后端在 Windows 上的 Docker 中运行 Zivid。 |