Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

the moment your Dockerfile has apt-get update and apt-get install is the moment your docker images stop being reproducible unless you take extreme measures like mirroring all deb repos you have in your sources.list.

disclaimer: happy docker user here.



Where is everyone getting the idea that Docker is for creating reproducible environments? I know when I first heard about Docker, it was mentioned, but Docker does not claim to provide that. Seems like a confusion between distributable and reproducible.


The execution environment for a product is certainly reproducible with Docker, assuming you actually make your base image Dockerfile work in a reproducible environment as well.

You can also use Dockerfiles as units of deployment for individual software projects, which offers that.

While it is true that NixOS offers a different vision for how to solve these problems, it does so in a way I find very destructive for actual use. It seems inferior for deploying software compared to containerization (which offers immutable and composable build artifacts), and very cumbersome to work with during software development (since the value of writing nix packages during development is cumbersome and for many language environments you have to deploy the source code in the package and compile it within the closure you expect to deploy on to make any headway).

Ya'll can pretend https://github.com/NixOS/patchelf doesn't exist because these problems are incredibly irritating, I guess.


The "Cattle vs. Pets" argument is basically that. You want all the cattle to look the same and you can't do that if they are modifying themselves.


Yeah, the point of docker is you build one image, test that, and share it around and that image should always work. The build is a different story.


> the moment your Dockerfile has apt-get update and apt-get install is the moment your docker images stop being reproducible unless you take extreme measures like mirroring all deb repos you have in your sources.list.

So don't do that. I can put mutable software into Nix packages because I can force arbitrary shell commands with non-deterministic output. That power exists. It'll just break the guarantees we'd like to enforce.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: