DSH Linux on WSL2 Docker Desktop: engine volume paths are not host-visible; configured volumes does not reach Store
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- docker, linux, sqlite
- Ambito
- backend, infrastructure
Direzione di ricerca
Start by reading dsh/packages/host/src/box.js, config.js, init.js, layerfs-client.js, and index.js to trace volume configuration and Store path handling. The report identifies a narrow candidate fix on a local branch, but the WSL2 named-volume route needs an upstream architecture decision. Done means both requested regressions pass: custom volume roots are honored and missing roots fail before volume creation; Docker Desktop WSL2 can use an explicitly mounted named-volume Store through Init, fork, mount, commit, and reopen.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
LayerFS x DSH: Linux WSL2 / Docker Desktop Store-path topology is incompatible with current Host route
Version and host (reproduced)
- Reproduced against LayerFS
af1eeef109a36e2c187a0a0058c880f4607ca617(PR #376 included). - On inspection, upstream main had moved to
5fb68ddc1acc3163e3ac3486133bde014c5fbed3(9 later commits, none changing config.js, box.js, layerfs-client.js, init.js). - Ubuntu under WSL2, Docker Desktop Engine 29.7.2 via
unix:///var/run/docker.sock. - Docker API reports
DockerRootDir=/var/lib/dockerand volume Mountpoint/var/lib/docker/volumes/<name>/_data. - Ubuntu Host
/var/lib/docker/volumesdoes not exist; DSH web runs as nonroot and must stay nonroot.
Exact distinguishing test (read only; same persisted Store)
docker volume inspect lfs-core-network-20261021b --format '{{.Mountpoint}}'
# /var/lib/docker/volumes/lfs-core-network-20261021b/_data
docker run --rm --pull never --network none \
-v /var/lib/docker/volumes:/var/lib/docker/volumes:ro \
-v lfs-core-network-20261021b:/named-store:ro \
--entrypoint sh layerfs-352-runtime:node24 -c '
test -f /var/lib/docker/volumes/lfs-core-network-20261021b/_data/global/store.sqlite && echo bind-visible || echo bind-missing
test -f /named-store/global/store.sqlite && echo volume-visible || echo volume-missing
'
# bind-missing
# volume-visible
Replace lfs-core-network-20261021b with an existing disposable named volume containing a LayerFS Store, and use any image with sh.
The Core SDK works in a container with the named volume explicitly mounted: project Init, branch fork, Workspace mount/exec/commit/unmount, branch merge and fresh process readback all passed. This issue is DSH Host / Docker Desktop topology, not evidence that LayerFS Core is broken.
Source-level mismatch (separate, narrow fix candidate)
dsh/packages/host/src/config.js:volumes: config.volumes || VOLUMES.dsh/packages/host/src/index.js: thelayerfs-hostschema omittedvolumes.dsh/packages/host/src/init.js:hostAccesschecksspec.volumes, but suppressesENOENT, allowing an invisible root past preflight.dsh/packages/host/src/layerfs-client.js:STORE_PATH: storePathOf(project.volume)does not bindspec.volumes.dsh/packages/host/src/box.js:storePathOfhardcodes/var/lib/docker/volumes; the macOS Store ContainercallMountsalso mounts that path, which resolves empty in this Docker Desktop WSL setup.- Upstream
AGENTS.mdcurrently authorizes the ported Store-worker exception for macOS only; do not silently enable it for Linux without an upstream architecture decision.
A minimal fix candidate for only the config/path/ENOENT defect exists on local branch
fix/wsl-docker-volumes-contract-20261021:
4b8cb8b9ef050ed9ebf063be9afa9579d17ce898 (base af1eeef...).
Changes: add volumes to real plugin config schema, bind it to Linux SDK Store path while retaining existing ported/macOS path, reject missing host root prior to Init, and add positive/negative Host regressions.
Targeted host, sim, runtime, syntax checks and git diff --check: PASS. Full DSH suite is NOT accepted: history tools require a missing sqlite3 binary, and unrelated history fixtures/assertions fail in this local environment.
Suggested upstream direction (separate from narrow fix)
Support a Docker Desktop/remote-engine Store route using Docker named-volume mounts for the client that opens the real Linux SDK Store (as tools/worktree_run.py already does), rather than depending on the Docker API Mountpoint being a Host-readable filesystem path. Reuse existing Host/SDK mechanisms; do not add another authority/controller, run DSH as root, chmod Docker's global volume tree, or weaken production service protections.
Request two independent regressions:
- With a real Linux-visible custom volume root,
layerfs-host.volumesaffects the Store path and a missing root refuses before Docker volume creation. - Under Docker Desktop WSL2, distinguish engine Mountpoint vs Host namespace; explicitly mounted named-volume Store can Init/fork/mount/commit/reopen, with no production volume writable by the test.
No change has been deployed to live DSH 3081. This report is a candidate/proposal, not an upstream accepted fix.
- Lingua principale
- Rust
- Stelle
- 2.1k
- Fork
- 110
- Merge medio
- 23h 52m
- PR unite (30g)
- 138
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Ephemeral-AI-Lab/layerfs
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Ephemeral-AI-Lab/layerfs#689 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Ephemeral-AI-Lab/layerfs#643 ·
I maintainer di solito rispondono entro 1 giorno
-
`branch.publish` accepts a stale base and overwrites `main` (lost update)Forse già presa @mengmengmengqiang l’ha presa oggi. Apertaapi/calls bug core/history
Ephemeral-AI-Lab/layerfs#691 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 8/100
Ephemeral-AI-Lab/layerfs#684 · 10 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
docs
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
Ephemeral-AI-Lab/layerfs#683 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Ephemeral-AI-Lab/layerfs
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
pop-os/cosmic-settings#2296 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
jonathanong/no-mistakes#3431 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Eyevinn/open-live-ingest#36 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno