← Back to context

Comment by thaumasiotes

4 months ago

> I think the important innovation of Docker was the image. It let people deploy consistent version of their software or download outside software.

What did it let people do that they couldn't already do with static linking?

I can't tell if this is a genuine question or not but if it is.. deploying a Ruby on Rails app with a pile of gems that have c deps isn't fixed with static linking. This is true for python and node and probably other things I'm not thinking of.

- most languages don't really do static linking in the same way as C

- things like "a network port" can also be a dependency, but can't be "linked". And so on for all sorts of software that expects particular files to be in particular places, or requires deploying multiple communicating executables

- Linux requires that you be root to open a port below 1024, a security disaster

- some dependencies really do not like being statically linked (this includes the GNU standard library!), for things like nsswitch

Because it doesn’t need you to delve deep into the build system of every dependency and application you ever want to package?