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?

  • Elastic Beanstalk Docker with Amazon CloudWatch
  • Can't add a shell build step with docker on containerized Jenkins
  • Missing Gemfile when using Docker on Heroku
  • Could I use docker or something similar to deploy windows application?
  • Docker Remote API & Binds
  • TravisCI/Docker: parameterized start of docker containers with matrix feature
  • How to access kurento media server running inside docker container
  • Titan/Cassandra Connection Issues in Docker Only
  • How to make other microservices aware of the IP address of the consul for service registry
  • Docker-compose hanging on pulling image where Dockerfile doesn't
  • Pushing private repository to Docker Hub fails: HTTP code 504 while uploading metadata
  • How to use command in docker-compose.yml
  • 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.

    Well no.

    It’s more like chroot() or jail() or 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.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.