Skip to content

Nested bind mounts broken in Docker Desktop 4.67.0 (Engine 29.3.1) on macOS Tahoe 26.4 #7870

@hasecon

Description

@hasecon

Description

Nested (overlapping) bind mounts in Docker Compose no longer work correctly on Docker Desktop 4.67.0 with macOS Tahoe 26.4. A second bind mount that targets a subdirectory of an existing bind mount fails to overlay — the directory remains empty inside the container.

Expected behavior

The second mount should overlay the subdirectory from the first mount, as it did in Docker Engine 28.x / Docker Desktop < 4.67.0.

Actual behavior

The first bind mount creates an empty directory at the overlay target on the host. The second mount does not populate it. The directory is empty inside the container.

Steps to reproduce

Given this docker-compose.yml:

services:
  app:
    build: .
    volumes:
      - ./app:/app              # mounts entire app directory
      - ./lib/pkg:/app/pkg      # should overlay pkg subdirectory with external package

Where ./lib/pkg/ contains Python modules (with __init__.py, subpackages, etc.):

  1. Run docker compose up
  2. The first mount creates an empty ./app/pkg/ directory on the host
  3. Inside the container, /app/pkg/ is empty — the second mount's content is missing
  4. Any imports from pkg fail with ModuleNotFoundError

Verification

Running docker run with the same volume flags works correctly:

docker run --rm -v "$(pwd)/app:/app" -v "$(pwd)/lib/pkg:/app/pkg" myimage ls /app/pkg/
# Shows all files correctly

But docker compose up with the equivalent config does not.

Environment

  • Docker Desktop: 4.67.0 (build 222858)
  • Docker Engine: 29.3.1
  • Docker Compose: v5.1.1
  • macOS: Tahoe 26.4 (build 25E246)
  • Hardware: Apple Silicon

Workaround

Using OrbStack (Docker Engine 28.5.2, Compose v2.40.3) with the same docker-compose.yml works correctly — all nested bind mounts function as expected.

Suspected cause

Docker Engine 29.x includes several mount-related changes that may have introduced this regression:

  • 29.1.3: "Fixed shared mount detection for paths mounted multiple times"
  • 29.3.0: New bind-create-src option for automatic source directory creation
  • 29.0.0: Removed deprecated bind-nonrecursive option

The macOS Tahoe 26.4 update (March 24, 2026) may also be a factor, as it can affect the VirtioFS layer used for bind mounts.

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