-
Notifications
You must be signed in to change notification settings - Fork 138
Nested bind mounts broken in Docker Desktop 4.67.0 (Engine 29.3.1) on macOS Tahoe 26.4 #7870
Description
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 packageWhere ./lib/pkg/ contains Python modules (with __init__.py, subpackages, etc.):
- Run
docker compose up - The first mount creates an empty
./app/pkg/directory on the host - Inside the container,
/app/pkg/is empty — the second mount's content is missing - Any imports from
pkgfail withModuleNotFoundError
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 correctlyBut 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-srcoption for automatic source directory creation - 29.0.0: Removed deprecated
bind-nonrecursiveoption
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.