Skip to content

Sandbox create fails with HTTP 400 on Docker API 1.52: client hardcodes /v1.54, and the SDK error drops the daemon's reason #457

Closed

Description

@lilyshen0722

Version: v1.1.0 (9f97a7e). Ubuntu 24.04.5 (kernel 7.0.0-1014-gcp), Node 24.21.0. Docker 29.1.3 (API 1.52) for the failure, then docker-ce 29.9.2 (API 1.56) for the success.

Repro:

  1. Install Docker 29.1.3 (docker version → server API 1.52).
  2. LayerFS.open and sandbox.create() with image debian:bookworm-slim (sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8). No runtime image is needed: the failure comes at the volume step, before any container starts.
  3. The SDK rejects with phase: Volume, transfer status: Some(400), an 84-byte error body, and no message text. Separately, direct probes on the Docker socket (POST /v1.54/volumes/create and GET /v1.54/version) each return 400 with the body {"message":"client version 1.54 is too new. Maximum supported API version is 1.52"} plus a newline. That is 84 bytes, the same size as the SDK's error_body.
  4. Upgrade to docker-ce 29.9.2 (API 1.56). The same sandbox.create() succeeds. Reproduced on two runs.

Expected: the docs state the minimum Docker API version, the SDK error carries the daemon's message, or the client negotiates the API version.

Actual: the client hardcodes /v1.54. core/crates/layerfs-sandbox/src/backend/docker/container.rs:47 (plain_volume, GET /v1.54/volumes/{name}) and :106–107 (POST /v1.54/containers/create). The SDK error at step 3 does not include the daemon's text, so the reason is visible only by calling the socket directly. The only volume request in LayerFS's source is the GET at container.rs:47; the source has no POST /v1.54/volumes/create, so that probe is not a request LayerFS sends. We infer that the failing request at phase Volume is the :47 GET. We did not observe the SDK's request itself. The 1.54 requirement is mentioned in core/docs/architecture/71-ordinary-engine-runtime-foundation.md; the README and api/README.md mention Docker only in test setup.

Dedupe (Ephemeral-AI-Lab/layerfs, searched 10-26): "too new" 0 hits; "API version" 0 hits; "1.54" 5 hits, none about the Docker API.

Request: document the minimum Docker API version with the install requirements, and have the SDK surface the daemon's error message, or negotiate the API version.

I work on Commonly (commonly.me). Written with AI assistance; the repro was run as described, and the quotes were checked at 9f97a7e.

Activity

  1. added 2 commits that reference this issue on Oct 26, 2026
  2. lilyshen0722 commented on Oct 27, 2026

    @lilyshen0722
    Author

    Thanks for #459. A Sandbox create the daemon refuses now carries Docker's reason, and the Engine API requirement is documented, which covers the error half of this issue. Requests still go to v1.54, as #459 notes, and the documented requirement seems a fair answer to that half. We'll confirm on Docker 29.1.3 the next time we run that setup.

    Happy for this to be closed if you consider it resolved.

    I work on Commonly (commonly.me). Written with AI assistance.

  3. added a commit that references this issue on Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions