You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two independent problems prevent redis-style images from running on mocker with persisted data — both reproduced with a full test matrix:
Bind mounts break images whose entrypoint chowns the data dir: any bind mount (-v /host/path:/data) makes the entrypoint's chown fail with Operation not permitted (virtiofs) and the container exits. Affects bothdocker.dragonflydb.io/dragonflydb/dragonfly:latestand the official redis:7. mocker-managed named volumes are NOT affected (chown passes).
Dragonfly:latest also hits the 1 GiB default memory cap: the default 4 proactor threads require 1.00 GiB, but the default container limit exposes only ~1003 MiB, so it exits with There are 4 threads, so 1.00GiB are required. Exiting... — even with no volume. redis:7 has no such issue.
Test matrix (mocker 0.9.3, macOS 26+ / Apple Silicon)
Image / config
No volume
Named volume (mocker run -v name:/data)
Bind mount (-v /host:/data)
dragonfly:latest (default 4 threads)
❌ memory cap
❌ memory cap
❌ chown
dragonfly:latest -m 2G
✅ serves
–
–
dragonfly:latest --proactor_threads=2
✅ serves
✅ serves
❌ chown
redis:7
✅ serves
✅ serves
❌ chown
biarms/mysql:5.7 (bind mount /var/lib/mysql)
–
–
✅ serves
Reproduction
# Bind mount -> chown failure, container Exited (both images)
mkdir -p /tmp/redis-data
mocker run -d --name r-bind -p 46401:6379 -v /tmp/redis-data:/data redis:7
mocker logs r-bind
# -> chown: changing ownership of '.': Operation not permitted
mocker run -d --name d-bind -p 46402:6379 -v /tmp/redis-data:/data docker.dragonflydb.io/dragonflydb/dragonfly:latest
mocker logs d-bind
# -> chown: changing ownership of '.': Operation not permitted# Dragonfly without volume -> memory cap failure
mocker run -d --name d-plain -p 46403:6379 docker.dragonflydb.io/dragonflydb/dragonfly:latest
mocker logs d-plain
# -> Found 1003.83MiB available memory. Setting maxmemory to 803.06MiB# -> There are 4 threads, so 1.00GiB are required. Exiting...# Working: named volume (chown passes) or no volume + fewer threads / more memory
mocker run -d --name d-ok -p 46404:6379 -v df-data:/data docker.dragonflydb.io/dragonflydb/dragonfly:latest --proactor_threads=2
mocker run -d --name d-ok2 -m 2G -p 46405:6379 docker.dragonflydb.io/dragonflydb/dragonfly:latest
mocker run -d --name r-ok -p 46406:6379 -v r-data:/data redis:7
# -> all serve
Key observations
Bug 1 is general to bind mounts, not dragonfly-specific: the official redis:7 fails identically; only images whose entrypoint tolerates a failed chown (e.g. biarms/mysql:5.7) work on bind mounts. mocker-managed named volumes pass the chown for both dragonfly and redis:7, so persistence works there.
Persistence: use a named volume (mocker run -v name:/data or compose with a volume that mocker manages as a real named volume); avoid bind mounts for redis-like images.
Dragonfly memory: add --proactor_threads=2 or -m 2G to the run/compose command.
Two independent problems prevent
redis-style images from running on mocker with persisted data — both reproduced with a full test matrix:chowns the data dir: any bind mount (-v /host/path:/data) makes the entrypoint'schownfail withOperation not permitted(virtiofs) and the container exits. Affects bothdocker.dragonflydb.io/dragonflydb/dragonfly:latestand the officialredis:7. mocker-managed named volumes are NOT affected (chown passes).There are 4 threads, so 1.00GiB are required. Exiting...— even with no volume.redis:7has no such issue.Test matrix (mocker 0.9.3, macOS 26+ / Apple Silicon)
mocker run -v name:/data)-v /host:/data)dragonfly:latest(default 4 threads)dragonfly:latest -m 2Gdragonfly:latest --proactor_threads=2redis:7biarms/mysql:5.7(bind mount/var/lib/mysql)Reproduction
Key observations
redis:7fails identically; only images whose entrypoint tolerates a failedchown(e.g.biarms/mysql:5.7) work on bind mounts. mocker-managed named volumes pass thechownfor both dragonfly and redis:7, so persistence works there.-m 2Gor--proactor_threads=2fixes it.Environment
us/tap/mocker, brew)docker.dragonflydb.io/dragonflydb/dragonfly:latest(df-v1.39.0),redis:7Workaround
mocker run -v name:/dataor compose with a volume that mocker manages as a real named volume); avoid bind mounts for redis-like images.--proactor_threads=2or-m 2Gto the run/compose command.💘 Generated with Crush