DSH Linux on WSL2 Docker Desktop: engine volume paths are not host-visible; configured volumes does not reach Store
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 30/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- docker, linux, sqlite
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Rust
- スター
- 2.1k
- フォーク
- 110
- 平均マージ
- 23時間 52分
- マージ済み PR(30日)
- 138
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Ephemeral-AI-Lab/layerfs のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
Ephemeral-AI-Lab/layerfs#689 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
Ephemeral-AI-Lab/layerfs#643 ·
メンテナーはふだん 1 日以内に返信
-
`branch.publish` accepts a stale base and overwrites `main` (lost update)対応中かも @mengmengmengqiang が今日担当しました。 オープンapi/calls bug core/history
Ephemeral-AI-Lab/layerfs#691 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 8/100
Ephemeral-AI-Lab/layerfs#684 · コメント 10 件 ·
メンテナーはふだん 1 日以内に返信
-
docs
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
Ephemeral-AI-Lab/layerfs#683 ·
メンテナーはふだん 1 日以内に返信
Ephemeral-AI-Lab/layerfs の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
pop-os/cosmic-settings#2296 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
jonathanong/no-mistakes#3431 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
Eyevinn/open-live-ingest#36 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信