mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-08-01 19:18:35 -04:00
docs(docker): polish WSL2 snap GPU guidance
This commit is contained in:
+27
-14
@@ -151,20 +151,33 @@ scripts/check-docker-gpu.sh --enable-nvidia-overlay
|
||||
scripts/check-docker-gpu.sh --install-nvidia-toolkit --enable-nvidia-overlay
|
||||
```
|
||||
|
||||
> **WSL2 + snap Docker.** If `docker run --gpus all ...` fails with
|
||||
> `failed to fulfil mount request: open /usr/lib/wsl/lib/libdxcore.so: no
|
||||
> such file or directory`, check whether Docker was installed via `snap`
|
||||
> (`snap list docker`, or `docker info --format '{{.DockerRootDir}}'` reports
|
||||
> a path under `/var/snap/docker/`). Snap's confinement prevents Docker from
|
||||
> seeing the GPU library WSL2 injects at `/usr/lib/wsl/lib`, even though the
|
||||
> file exists on the host — installing or reconfiguring
|
||||
> `nvidia-container-toolkit` will not fix this, since the toolkit isn't the
|
||||
> problem. `scripts/check-docker-gpu.sh` detects this combination and calls
|
||||
> it out directly. The fix is to remove snap Docker and install the official
|
||||
> apt-based Docker Engine instead
|
||||
> ([docs.docker.com/engine/install](https://docs.docker.com/engine/install/)),
|
||||
> then re-run `nvidia-ctk runtime configure --runtime=docker` and restart
|
||||
> Docker.
|
||||
**WSL2 + snap Docker.** If the NVIDIA check fails with this error, Docker may be
|
||||
installed via snap:
|
||||
|
||||
```text
|
||||
failed to fulfil mount request: open /usr/lib/wsl/lib/libdxcore.so: no such file or directory
|
||||
```
|
||||
|
||||
Check with `snap list docker` or:
|
||||
|
||||
```bash
|
||||
docker info --format '{{.DockerRootDir}}'
|
||||
```
|
||||
|
||||
A Docker root under `/var/snap/docker/` means snap confinement can prevent
|
||||
Docker from seeing WSL2's `/usr/lib/wsl/lib` GPU libraries even when the files
|
||||
exist on the host. Reinstalling or reconfiguring `nvidia-container-toolkit` will
|
||||
not fix that. Remove snap Docker, install the official apt-based Docker Engine
|
||||
([Docker docs](https://docs.docker.com/engine/install/ubuntu/)), then configure
|
||||
the NVIDIA runtime again:
|
||||
|
||||
```bash
|
||||
sudo snap remove docker
|
||||
sudo nvidia-ctk runtime configure --runtime=docker
|
||||
sudo systemctl restart docker
|
||||
```
|
||||
|
||||
Then re-run `scripts/check-docker-gpu.sh`.
|
||||
|
||||
Safety notes:
|
||||
- The app never installs host GPU runtime automatically.
|
||||
|
||||
@@ -214,16 +214,9 @@ _check_nvidia_smi() {
|
||||
echo
|
||||
}
|
||||
|
||||
# Returns 1 if Docker is unavailable (callers should stop further GPU checks).
|
||||
# WSL2 only: Docker installed via snap confines the container runtime's mount
|
||||
# namespace, so it cannot see the GPU library WSL2 injects at
|
||||
# /usr/lib/wsl/lib/libdxcore.so even though the file exists on the host.
|
||||
# Symptom: `docker run --gpus all ...` fails with
|
||||
# "failed to fulfil mount request: open /usr/lib/wsl/lib/libdxcore.so: no
|
||||
# such file or directory". No nvidia-container-toolkit install or
|
||||
# `nvidia-ctk runtime configure` fixes this — the fix is to stop using the
|
||||
# snap package. DockerRootDir is the reliable way to tell: snap installs
|
||||
# report a path under /var/snap/docker/ instead of the normal /var/lib/docker.
|
||||
# WSL2 snap Docker cannot see /usr/lib/wsl/lib/libdxcore.so from its confined
|
||||
# namespace, so NVIDIA passthrough fails until the user switches to non-snap
|
||||
# Docker. DockerRootDir identifies snap installs more reliably than snap(8).
|
||||
_is_wsl() {
|
||||
grep -qi microsoft /proc/version 2>/dev/null && return 0
|
||||
[ -d /usr/lib/wsl ] && return 0
|
||||
@@ -237,6 +230,7 @@ _is_docker_snap() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# Returns 1 if Docker is unavailable (callers should stop further GPU checks).
|
||||
_check_docker() {
|
||||
_info "Checking Docker..."
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
|
||||
Reference in New Issue
Block a user