Post date: Mar 30, 2015 1:44:22 PM
You may be tempted by the hype surrounding Docker. Let's compare with VMs.
- Docker is application-centric: one container, one application (as a general rule). This may be very limiting; in particular, the case often arises that a system is compound by multiple applications (say: [insert app here] and MySQL - or even any persistent storage). This means that you need to double your effort and put effort in combining the two. It is the exact opposite of the self-containedness of VMs.
- Docker containers are ephemeral. It encourages you to write instructions to build them from base images and URLs, rather than storing the results of a building effort. This may appear nice for reproducibility, but the Internet is mutable; I am under the impression that writing Dockerfiles implies committing to a never-ending maintenance effort. Even worse, they will stop working when resources become unavailable. Then, pray you still have your container images around.
- Docker containers’ build process is version-managed (although its focus on self-building appears to kind-of defeat this)
- Containerized applications boot up much faster than VMs (almost like native applications). This is rather irrelevant for long-running containers (say databases).