| (For us) Docker is not about security or scalability but about (good enough) isolation, separation of concerns and reproducability. Let me elaborate. * Isolation: Docker enables us to pack any software and let it run with close to none side effects. Different versions of packages, libs and gems needed by apps don't interfere. It's like bundler but for all kind of dependencies not only gems. * Separation of concerns: For our operations it doesn't matter what's inside a Docker container. We have mid sized Ruby web apps, small Go demons, NGINX with Lua support compiled in, legacy PHP apps neatly packed in Docker containers. They have a well defined interface: The build script which consistently sums up dependencies and the build process.
`docker run` wrappers which clearly state the interface of the running container like exposed ports and mounted volumes. * Reproducability: We are able to run the same containers in development, staging and production. A dozen containers will easily run on a developers laptop. As a side effect the Docker architecture makes us think harder about app architecture like which services are stateless and which are not and for what reason. The fact that containers share a kernel and thus are not 100% isolated or reproducable as with virtualization hasn't been an issue for us (so far). There are still issues and features we're missing. For example private Docker repos are PITA and building instead of pulling from a repo means you might get fooled by the build cache. And we'd love to have build in support (or at least a common standard or best practices) for orchestration. But all together for our needs it's already pretty useful. |
Look into BOSH[0][1]. It's a IaaS orchestrator that works for multiple cloud backends -- AWS, openstack, warden and vsphere out of the box. I use it in my day job.
It's already been applied to working with Docker containers.[2]
[0] https://github.com/cloudfoundry/bosh
[1] http://docs.cloudfoundry.org/bosh/
[1] http://blog.pivotal.io/cloud-foundry-pivotal/products/managi...