Describe the bug
Vulkan fails to initialize inside a container using a Tesla V100 GPU. When executing vulkaninfo --summary inside a container (e.g., Ubuntu 24.04), the Vulkan loader throws a Code 0 error while trying to process the ICD libGLX_nvidia.so.0 via vk_icdGetInstanceProcAddr, resulting in "Found no drivers!" and ERROR_INCOMPATIBLE_DRIVER. This appears to be caused by libGLX attempting to initialize windowing/X11 components in a headless server environment where no display server is present.
To Reproduce
- Run a container (e.g., Ubuntu 24.04 base image) with NVIDIA Container Toolkit and
NVIDIA_DRIVER_CAPABILITIES=all.
- Execute
vulkaninfo --summary inside the running container.
- Observe the loader error:
loader_scanned_icd_add: Could not get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD libGLX_nvidia.so.0.
Expected behavior
vulkaninfo should successfully initialize a Vulkan instance and list the Tesla V100 device properties in a headless environment without failing on libGLX_nvidia.so.0.
Environment (please provide the following information):
nvidia-container-toolkit version: 1.19.1
- NVIDIA Driver Version:
580.126.09
- Host OS:
Debian 12
- Kernel Version:
6.1.0-50-amd64
- Container Runtime Version:
Docker v29.6.2
- CPU Architecture:
x86_64
- GPU Model(s):
Tesla V100
If applicable, also provide:
- Kubernetes Distro and Version: N/A (Docker Standalone)
- NVIDIA GPU Operator version: N/A
- CUDA Version: N/A
Information to attach
- Docker Version:
29.6.2
- Container
vulkaninfo --summary output:
ERROR: [Loader Message] Code 0 : loader_scanned_icd_add: Could not get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD libGLX_nvidia.so.0
'DISPLAY' environment variable not set... skipping surface info
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
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:458:vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
- The
nvidia_icd.json manifest was present in both /usr/share/vulkan/icd.d/ and /etc/vulkan/icd.d/. This caused the Vulkan loader to scan both locations, resulting in a duplicated device view when executing vulkaninfo --summary.
- Host
vulkaninfo --summary output:
==========
VULKANINFO
==========
Vulkan Instance Version: 1.3.239
Instance Extensions: count = 22
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities : extension revision 1
VK_KHR_get_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
Instance Layers: count = 5
--------------------------
VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.3.211 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.3.211 version 1
VK_LAYER_NV_optimus NVIDIA Optimus layer 1.4.312 version 1
VK_LAYER_NV_present NVIDIA GR2608 layer 1.4.312 version 1
Devices:
========
GPU0:
apiVersion = 1.4.312
driverVersion = 580.126.9.576
vendorID = 0x10de
deviceID = 0x1db1
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = Tesla V100-SXM2-16GB
driverID = DRIVER_ID_NVIDIA_PROPRIETARY
driverName = NVIDIA
driverInfo = 580.126.09
conformanceVersion = 1.4.1.3
deviceUUID = 095ef9f0-ec89-ef9e-98b3-bdedb50496f9
driverUUID = 9756eed7-117e-56eb-8928-8e249b39bb59
GPU1:
apiVersion = 1.4.312
driverVersion = 580.126.9.576
vendorID = 0x10de
deviceID = 0x1db1
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = Tesla V100-SXM2-16GB
driverID = DRIVER_ID_NVIDIA_PROPRIETARY
driverName = NVIDIA
driverInfo = 580.126.09
conformanceVersion = 1.4.1.3
deviceUUID = 095ef9f0-ec89-ef9e-98b3-bdedb50496f9
driverUUID = 9756eed7-117e-56eb-8928-8e249b39bb59
GPU2:
apiVersion = 1.3.230
driverVersion = 0.0.1
vendorID = 0x10005
deviceID = 0x0000
deviceType = PHYSICAL_DEVICE_TYPE_CPU
deviceName = llvmpipe (LLVM 15.0.6, 256 bits)
driverID = DRIVER_ID_MESA_LLVMPIPE
driverName = llvmpipe
driverInfo = Mesa 22.3.6 (LLVM 15.0.6)
conformanceVersion = 1.3.1.1
deviceUUID = 6d657361-3232-2e33-2e36-000000000000
driverUUID = 6c6c766d-7069-7065-5555-494400000000
Describe the bug
Vulkan fails to initialize inside a container using a Tesla V100 GPU. When executing
vulkaninfo --summaryinside a container (e.g., Ubuntu 24.04), the Vulkan loader throws a Code 0 error while trying to process the ICDlibGLX_nvidia.so.0viavk_icdGetInstanceProcAddr, resulting in "Found no drivers!" andERROR_INCOMPATIBLE_DRIVER. This appears to be caused bylibGLXattempting to initialize windowing/X11 components in a headless server environment where no display server is present.To Reproduce
NVIDIA_DRIVER_CAPABILITIES=all.vulkaninfo --summaryinside the running container.loader_scanned_icd_add: Could not get 'vkCreateInstance' via 'vk_icdGetInstanceProcAddr' for ICD libGLX_nvidia.so.0.Expected behavior
vulkaninfoshould successfully initialize a Vulkan instance and list the Tesla V100 device properties in a headless environment without failing onlibGLX_nvidia.so.0.Environment (please provide the following information):
nvidia-container-toolkitversion:1.19.1580.126.09Debian 126.1.0-50-amd64Docker v29.6.2x86_64Tesla V100If applicable, also provide:
Information to attach
29.6.2vulkaninfo --summaryoutput:nvidia_icd.json manifest was present in both/usr/share/vulkan/icd.d/and/etc/vulkan/icd.d/. This caused the Vulkan loader to scan both locations, resulting in a duplicated device view when executingvulkaninfo --summary.vulkaninfo --summaryoutput: