Docker introduces some intriguing usability, packaging and deployment patterns. These new patterns offer the potential to effect massive improvements to the enterprise application development and operations specialties. Containers also offer the promise of bare metal performance while offering some amount of isolation as well. But can they deliver on that promise ?
Since the early part of January, the Performance Engineering Group at Red Hat has run huge amounts of microbenchmarks, benchmarks and application workloads in Docker containers. The output of that effort has been a steady stream of lessons learned and advice/guidance given to our product architects and developers. How dense can we go ? How fast can it go ? Are these defaults “sane” ? What NOT to do…etc.
Disclaimer: as anyone who has worked with Docker knows, it’s a project under heavy development. I mention that because this blog post includes code snippets and observations that are tied to specific experiments and Docker/kernel versions. YMMV, the answer of course is “it depends”, and so on.