What are the advantages of docker containers over statically linked EXEs?
I am struggling to understand exactly what practical problem docker solves. Docker prescribes “one process per container”. If your container only encapsulates one program/process, then what advantage is there over a statically linked executable? Doesn’t this do basically the same thing (encapsulate a program) in a much more simple and efficient way?
2 Solutions collect form web for “What are the advantages of docker containers over statically linked EXEs?”
Docker resolve a list of common problems that a statically linked exe does not:
- You distribute your app with folders in a known file system, environment variables initialized, and network settings previously created and established to work. Not in risky setup time with your app running for first time trying to create folders, paths, environment vars, etc. and getting crashed for permissions errors, network unidentified, ABI incompatibilities, etc.
- It is more convenient to setup microservices architectures. Many instances running each one in its own environment without conflicting races and offering tools for distribute, load and running your backend services.
It’s more like
pledge() the benefit of docker is that you can easily change user context in which the program is running.
Another benefit is that you can use a complete different OS then the host is. e. g.: MS Dotnet core 1 on Linux.