docker linearity - benclifford/text GitHub Wiki

docker linearity - good and bad

docker as a packaging mechanism (vs eg RPM, dpkg, nix)

  • we can dump whatever we want anywhere in the filesystem without further packaging effort. until we want to start mounting stuff externally, in which case suddenly we need to care. doesn't care what is "essential" (eg. a program executable) and what is "accidental" (eg. log files that were written during install)

  • uninstall is only taking a linear step back (in the same way that install is making a linear step forward)

  • when there is not a wide graph of expensive-to-install dependencies, this is ok - eg a series of four libraries that each needs the previous one to build. but difficult to build ad-hoc installs (eg. I want vim, you want emacs) that are facilitated by a real package manager.

  • copes with things like Haskell stack which want to maintain their own cache directories that aren't "packaged" in the RPM sense of having explicitly exposed package files, but are still package-like.