Why Docker is Not Yet Widely Successful in Production
A peek into how Shopify deploys Docker in production, and why some bottlenecks are keeping other companies from succeeding with containers.
Join the DZone community and get the full member experience.Join For Free
There will always be cynicism around new technology or methods, but this article by Simon Eskildon really, clearly articulates some of the production issues surrounding Docker. It's a great read, and a lot of his observations come from his experience at Shopify, which runs its core platform on Docker containers at scale. He goes in depth on several issues, including:
Image building: Namely, the speed to build them just isn't there for large applications, and Dockerfiles cannot yet manage complexity the way tools like Chef or Puppet can to make it easier. However, he does predict that containers will render those tools ineffective in the next decade or so. Since Docker can't do this, Shopify builds their own system from scratch using the Docker API.
Garbage collection: No matter what you do, right now you need to write your own garbage collectors. Thankfully, Spotify just open sourced theirs.
Iteration speed and state of core: As of 1.7, Docker has added an experimental changes feature to let users pull features from production and change them at any time. This is a great feature for those who are already using Docker because it lets them implement changes faster, but the barrier to entry for those looking to adopt containers is still high. Docker is looking to implement plugins in the near future to make this easier for new companies.
Logging: Support for logging drivers was added in 1.6, but those drivers have to be accepted into core. As a result, there is still no universal set of best practices for logging in Docker.
Filesystems: Docker relies on Copy-on-Write (CoW) from the filesystem to help with its ability to scale. However, the newness of CoW systems running on Linux poses some issues. Simon goes really in-depth here about Shopify's experiences with these issues.
"Edgy" kernal features: Piggybacking on the filesystem issue, Docker leverages several new kernal features that have not seen widespread adoption. Because of that, obscure bugs are likely to show up without teams having enough resources to fix them effectively.
With all the excitement around Docker, it's still important to note where improvements need to be made. This is a great take on the subject, which you can read here at Simon's blog.
Opinions expressed by DZone contributors are their own.