The aboves are nice introductory presentations about docker from the CTO Solomon Hykes.
an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack clusters, public clouds and more.
according to the official site.
I was looking for a way to get many servers for testing erlang/elixir distribution features, and then I’m experimenting on docker lately. Docker provides a easier way to get multiple isolated environments, compared with vagrant VMs (VirtualBox, or AWS EC2/DigitalOcean).
In the above presentation, granularity of the “conainer” to ship applications is being discussed. One approach is to deploy applications along with a new VM, and another approach is just deploy application-package itself. Docker is heading between them using light-weight linux-container.
Also, docker is focused on shipping applications from containers to containers. Docker Index provides a way to post/get pre-configured containers. It’s interesting idea to isolate applications in the container and just ship them to another location, in a unified form.
I was trying Chef for a while for deploying applications (elixir and dynamo). Chef is one good tool, but it’s a little difficult to write good cookbooks. It tries to hide the complexity of different OS environments, but it often involves environment-specific logics. Also, chef’s approach is to unify the application deployment procedure, and it involves starting-up new VM many times. Then, the procedure becomes relatively heavy-weight and takes time.
If the docker’s approach can remove these pain by unifying the underlying environments, it’s very interesting.
The downside of docker’s approach may be some complexity at connecting containers, due to the additional layer of containers on top of the VM. Chef Versus Docker at RelateIQ has some description about port forwarding, in order to expose services in the container to the external world (Around 6:00). It involves different ports at multiple layers, and seems a little difficult. Link Container might be a solution, but I need more study and experiment for understanding it better.