How to use pixel-streaming linux docker?

Hi, I am building my pixel-streaming container (Ubuntu 22.04.3 LTS) on wsl. I use the following dockerfile.

FROM adamrehn/ue4-runtime:22.04-cudagl12-x11

ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES},video 

USER root

RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub

RUN mkdir -p /var/lib/apt/lists/partial && \
    chmod 755 /var/lib/apt/lists/partial

RUN apt-get update && \
    apt-get install -y software-properties-common wget && \
    apt-get update && \
    add-apt-repository ppa:graphics-drivers/ppa && \  
    wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | tee /etc/apt/trusted.gpg.d/lunarg.asc && \
    wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list http://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list && \
    apt-get update && \
    apt-get install -f --fix-missing && \
    apt-get install --no-install-recommends -y libvulkan-dev vulkan-sdk vulkan-tools

COPY Linux /Home/Linux

WORKDIR /Home

Use the following build command.

docker build -t test .

Use the following run command.

docker run -it --gpus all test 

Running my ue5.1 pixel streaming application in docker, I got the following warning and quit.

[2024.08.07-06.22.40:808][  0]LogLinux: Warning: MessageBox: Cannot find a compatible Vulkan driver (ICD).

Please look at the Getting Started guide for additional information.: Incompatible Vulkan driver found!: Cursors are not currently supported:
[2024.08.07-06.22.40:808][  0]LogCore: FUnixPlatformMisc::RequestExit(bForce=true, ReturnCode=1)
[2024.08.07-06.22.40:808][  0]LogCore: FUnixPlatformMisc::RequestExit(1)

Executing nvidia-smi in both docker and wsi yields the following results.

Wed Aug  7 15:13:22 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.129.01             Driver Version: 537.70       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060 Ti     On  | 00000000:01:00.0  On |                  N/A |
| 30%   32C    P8               8W / 200W |   1048MiB /  8192MiB |      3%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A        24      G   /Xwayland                                 N/A      |
|    0   N/A  N/A        31      G   /Xwayland                                 N/A      |
|    0   N/A  N/A        33      G   /Xwayland                                 N/A      |
+---------------------------------------------------------------------------------------+

But executing vulkaninfo in docker yields the following results.

ERROR: [Loader Message] Code 0 : vkCreateInstance: Found no drivers!
Cannot create Vulkan instance.
This problem is often caused by a faulty installation of the Vulkan driver or attempting to use a GPU that does not support Vulkan.
ERROR at ./vulkaninfo/./vulkaninfo.h:456:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER

What did I do wrong? How to properly install vulkan in docker? I wish someone could help me. Thanks in advance.

This may be a problem with wsl, where I can’t even recognize my GPU. So I moved to a real Linux machine for testing, and the UE program is working fine for now, but it still needs more work to get the pixel stream running. :slightly_smiling_face: