Docker, VMs, and the price we pay

docker
vm
performance
(Josh Zamor) #1

Over 2 years ago we made the decision to dockerize v3 - from development tooling through to testing and on to production. 3 months ago I jumped back into Windows with a personal desktop after a decade plus in OS X. And a few days ago, Sam Safron posted an article on the performance penalty Ruby developers pay on Windows (and other OS, VM, etc): Why I stuck with Windows for 6 years while developing Discourse.

Two years ago a completely dockerized stack seemed to make sense - adoption was moving fast and there was a hope that simplifying dev environments could help onboard developers in LMIC. While not perfect two years ago, I thought Docker would be further along today then it really is. On Windows 10, Docker for Windows actually regressed over the last year with what appears to be a CIFS issue. On OS X, while I don’t know what VM tax I’m paying, I wouldn’t be surprised at all if it’s significant - I’ve generally come to expect it to have performance issues that crop up with the some updates.

This has me wondering if we should alter course a bit. I’m not suggesting we’d ditch Docker for production, CI/CD, and tooling. I am suggesting that we:

  • Move away from mounting host filesystems as volumes into a container - this is where most issues arise.
  • Move away from running SDK’s in containers - Tools such as SDKMAN, HomeBrew, Chocolatey do pretty good job at managing your development tooling anyhow.
  • Keep using Docker for useful utilities, deploying needed services such as Postgres, CI/CD, production, etc

I know many of us dual-boot already, and some of us have likely just accepted the non-linux tax and moved on. I’m curious to hear your experience, and what SDK tooling support you’d like to see changed?