14 ms·
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
by teyc 10y ago
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.