Published on

在Docker中使用Vulkan

Authors

1. 为什么要在Docker中使用Vulkan

在一些环境中,Vulkan的安装和配置可能会比较麻烦,在Docker中具备使用Vulkan的能力的话,可以很方便的在不同的环境中使用Vulkan,并且能够比较快速的复制迁移应用。

2. 支持Docker调用NVIDIA GPU

Docker-nvidia 是 Docker 的一个插件,它允许 Docker 容器与 NVIDIA GPU 进行交互

接下来安装Docker-nvidia

先添加 NVIDIA 容器工具包的存储库

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && 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/$distribution/libnvidia-container.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-docker2

安装完成之后重启一下电脑,不然Docker-nvidia可能不会生效

3. vulkan Docker 示例

用dockerfile创建一个vulkan的docker镜像

FROM ubuntu:20.04
# 设置驱动支持,docker中可以使用GPU了。
ENV NVIDIA_DRIVER_CAPABILITIES=all
ENV NVIDIA_VISIBLE_DEVICES=all
RUN apt-get -y install \
    vulkan-tools \
    mesa-utils

下面是docker-compose 的配置

services:
  vulkan_in_docker:
    build: .
    runtime: nvidia
    command: sh -c "nvidia-smi && vulkaninfo"

之后运行docker-compose up --build可以看到一些输出信息:

  • nvidia-smi:显示了NVIDIA GPU的信息 output-nvidia
  • vulkaninfo:显示了NVIDIA GPU的信息 output-vulkaninfo

之后就可在docker中使用vulkan了,代码我放在github上了,需要的话可以自取