Jeremy Yallop

Author Archives: Jeremy Yallop

User-guided caching in Docker for Mac

Recent Docker releases (17.04 CE Edge onwards) bring significant performance improvements to bind-mounted directories on macOS. (Docker users on the stable channel will see the improvements in the forthcoming 17.06 release.) Commands for bind-mounting directories have new options to selectively enable caching.

Containers that perform large numbers of read operations in mounted directories are the main beneficiaries. Here’s an illustration of the improvements in a few tools and applications in common use among Docker for Mac users: go list is 2.5× faster; symfony is 2.7× faster, and rake is 3.5× faster, as illustrated by the following graphs:

go list (2.5× speedup)
Docker for Mac

go list ./... in the moby/moby repository

symfony (2.7× speedup)
Docker for Mac

curl of the main page of the Symfony demo app

rake (3.5× speedup)
Docker for Mac

rake -T in @hirowatari’s benchmark

For more details about how and when to enable caching, and what’s going on under the hood, read on.

Basics of bind-mounting

A defining characteristic of containers is isolation: by default, many parts of the execution environment of a container are isolated both from other containers and from the host system. In the filesystem, isolation shows up as layering: the filesystem Continue reading