3 ms·
Ask HN: Docker, where do I start? What's the point?
I miss the container train. I'm not pro or against Docker but I'd like to understand the buzz around it.
- LordPacket 10y agoI recommend this article, it will cure you from Docker. https://thehftguy.wordpress.com/2016/11/01/docker-in-production-an-history-of-failure/ https://thehftguy.wordpress.com/2016/11/01/docker-in-product...
- teyc 10y agoHere'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 10y agoThe 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.