tl;dr: Docker’s default bind mount performance for projects requiring lots of I/O on macOS is abysmal. It’s acceptable (but still very slow) if you use the
cached
ordelegated
option. But it’s actually fairly performant using the barely-documented NFS option!
Ever since Docker for Mac was released, shared volume performance has been a major pain point. It was painfully slow, and the community finally got a cached
mode that offered a 20-30x speedup for common disk access patterns around 2017. Since then, the File system performance improvements issue has been a common place to gripe about the lack of improvements to the underlying osxfs
filesystem.
Since around 2016, support has been around (albeit barely documented) for NFS volumes in Docker (see Docker local
volume driver-specific options).