
Unlike Docker on Linux, any file system modifications will need to get passed between the container and host through Docker for Mac, which could soon add a good deal of additional computational overhead.

HyperKit stipulates that the kernel capabilities of Linux. This really can be a native macOS program, which can be bundled with an embedded hypervisor ( HyperKit). I guess delegated shines with write-heavy flows, and performs on the same level as cached for read-heavy cases.Docker containers operate along with a Linux kernel significance Docker on Linux may use the native kernel and the inherent virtual file system shared between the container and host. The docs also say that delegates offer significantly better performance than the other configurations, though I didn't notice significant changes regarding Rails start-up time.

Here's how official documentation describes them: What does that mean? Those configurations allow micro-delays between propagating changes from one FS to another. To circumvent this issue, you could switch the mode of the mounted volume from consistent (default one) to either cached or delegated. So, the start-up is slowed down, but once the app is in the memory, performance comes back to normal.

It adds relatively high penalty on IO-intensive operations - like reading sources of each of your app’s dependencies and their dependencies.

However, that’s not the case for OS X, because it uses another file system type, and syncing changes between host and container takes some time. When you run Linux containers on Linux hosts, there’s no overhead: both container and host end up using the same FS. By default, Docker maintains perfect consistency between the container’s and host’s file systems.
