
Ask HN: Docker, where do I start? What's the point? - tangue
I miss the container train. I&#x27;m not pro or against Docker but I&#x27;d like to understand the buzz around it.
======
teyc
Here's my understanding of what docker is. Deploying software consistently can
be difficult. Your code always depend on some dynamically loaded libraries on
the operating system. Even if you statically link your software, you still
have dependency on the operating system that you developed against.

The classic way to mitigate this is to use virtual machines. But virtual
machines are big, and bulky. Docker combines several tricks that are only
available on Linux so that a single process thinks it's running on a virtual
machine. Your binaries are shipped in a diff format against a particular OS
version. If your binary depends on some third party packages, you can apt-get
install them and ship these together with your binary image.

Another example of docker use case is in software development. Your OS might
be running a version of python, while you are developing against a different
version. Your current project may have dependencies on particular third party
libraries. By installing all these into the docker image, it will be a lot
easier for you if you need to come back to make some changes in the future.

Furthermore, docker being free, there are now a range of solutions that have
popped up around managing the lifetime of docker containers for scaling etc.
These then to be interesting to people who are running internet-scale
software, but less so if you are writing some enterprise applications.

------
brudgers
The best abstraction I have heard is that in terms of developer experience,
containers/Docker are a way of versioning execution environments that's
analogous to the way VCS/git versons source control.

When it comes to deploying an execution environment, containers/Docker have an
advantage over configuration tools (such as Puppet/Chef) by being atomic.
Containers cannot be partially deployed and therefore put a machine in an
arbitrary state. Orchestration layer tools (Kubernetes/Swarm) handle
deployment at the level of multiple containers.

Generally, containers reduce dependency conflicts between applications. On the
other hand, there's another level of indirection that may not be appropriate
to a particular business model or make a particular developer's life easier.
That doesn't mean they're not worth checking out.

------
LordPacket
I recommend this article, it will cure you from Docker.

[https://thehftguy.wordpress.com/2016/11/01/docker-in-
product...](https://thehftguy.wordpress.com/2016/11/01/docker-in-production-
an-history-of-failure/)

