Is there a way to disable, hide, or remove nvidia runtime from Docker Container for Windows 4.34.1?
TL;DR
I am running Win 11 Pro on AMD 7600x with iGPU. I don't have a discrete nVidia GPU.
Run docker info CLI against Docker Desktop 4.33.1 => Runtimes: io.containerd.runc.v2 runc
Run docker info CLI against Docker Desktop 4.34.2 => Runtimes: io.containerd.runc.v2 nvidia runc => New nvidia runtime appears, even though I don't have nvidia hardware
Start ollama/ollama:0.3.12 with default runtime => Success
docker run --rm -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.3.12
c439ad3e9f053f80e362794955753d5993e794d69fbc870829b1af5264b14af1
Start ollama/ollama:0.3.12 with nvidia runtime => Failure with same error logged by OllamaContainer
Start ollama/ollama:0.3.12 with nvidia runtime => Failure with same error logged by OllamaContainer
docker run --rm --runtime=nvidia -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama:0.3.12
3511b245dafedf705d3ccdacc1cfc07d45efcaa47543eea27d3800f8051290df
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: WSL environment detected but no adapters were found: unknown.
Expected behavior
Docker Desktop installer should detect if I have nVidia GPU or not.
If not, Docker Desktop should give me an option to remove, hide, or disable the nvidia runtime, so it doesn't break backwards compatibility with third-party software such as https://github.com/testcontainers/testcontainers-java.
docker version
Client:
Version: 27.2.0
API version: 1.47
Go version: go1.21.13
Git commit: 3ab4256
Built: Tue Aug 27 14:17:17 2024
OS/Arch: windows/amd64
Context: desktop-linux
Server: Docker Desktop 4.34.2 (167172)
Engine:
Version: 27.2.0
API version: 1.47 (minimum version 1.24)
Go version: go1.21.13
Git commit: 3ab5c7d
Built: Tue Aug 27 14:15:15 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.20
GitCommit: 8fc6bcff51318944179630522a095cc9dbf9f353
runc:
Version: 1.1.13
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
Client:
Version: 27.2.0
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.16.2-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe
compose: Docker Compose (Docker Inc.)
Version: v2.29.2-desktop.2
Path: C:\Program Files\Docker\cli-plugins\docker-compose.exe
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.34
Path: C:\Program Files\Docker\cli-plugins\docker-debug.exe
desktop: Docker Desktop commands (Alpha) (Docker Inc.)
Version: v0.0.15
Path: C:\Program Files\Docker\cli-plugins\docker-desktop.exe
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.2
Path: C:\Program Files\Docker\cli-plugins\docker-dev.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.25
Path: C:\Program Files\Docker\cli-plugins\docker-extension.exe
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.5
Path: C:\Program Files\Docker\cli-plugins\docker-feedback.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.3.0
Path: C:\Program Files\Docker\cli-plugins\docker-init.exe
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: C:\Program Files\Docker\cli-plugins\docker-sbom.exe
scout: Docker Scout (Docker Inc.)
Version: v1.13.0
Path: C:\Program Files\Docker\cli-plugins\docker-scout.exe
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 2
Server Version: 27.2.0
Storage Driver: overlayfs
driver-type: io.containerd.snapshotter.v1
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 nvidia runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 8fc6bcff51318944179630522a095cc9dbf9f353
runc version: v1.1.13-0-g58aa920
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
Kernel Version: 5.15.153.1-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 15.2GiB
Name: docker-desktop
ID: e68f8e59-717f-4b60-beba-3b6cf1bb2372
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=npipe://\\.\pipe\docker_cli
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
OllamaContainer uses presence or absence of nvidia runtime in docker info output to toggle nvidia GPU support on/off in its ollama container startup command.
Info info = this.dockerClient.infoCmd().exec();
Map<String, RuntimeInfo> runtimes = info.getRuntimes();
if (runtimes != null) {
if (runtimes.containsKey("nvidia")) {
Listing nvidia as a runtime in docker info output on a Win 11 systems that lacks any nVidia hardware is confusing and non-intuitive, and breaks ollama container support in https://github.com/testcontainers/testcontainers-java.
Description
Is there a way to disable, hide, or remove
nvidia
runtime from Docker Container for Windows 4.34.1?TL;DR
I reported full details in https://github.com/testcontainers/testcontainers-java/issues/9287.
Reproduce
Start ollama/ollama:0.3.12 with default runtime => Success
Start ollama/ollama:0.3.12 with nvidia runtime => Failure with same error logged by OllamaContainer
Expected behavior
Docker Desktop installer should detect if I have nVidia GPU or not.
If not, Docker Desktop should give me an option to remove, hide, or disable the
nvidia
runtime, so it doesn't break backwards compatibility with third-party software such as https://github.com/testcontainers/testcontainers-java.docker version
docker info
Diagnostics ID
3C15E1C8-AD0D-478C-BA73-84B44AD418FC/20240926043609
Additional Info
OllamaContainer uses presence or absence of
nvidia
runtime indocker info
output to toggle nvidia GPU support on/off in its ollama container startup command.https://github.com/testcontainers/testcontainers-java/blob/04206d9dff440e875906f01151f09ad04da3c68f/modules/ollama/src/main/java/org/testcontainers/ollama/OllamaContainer.java#L38
Listing
nvidia
as a runtime indocker info
output on a Win 11 systems that lacks any nVidia hardware is confusing and non-intuitive, and breaks ollama container support in https://github.com/testcontainers/testcontainers-java.