Stop use docker

devilish666@lemmy.world to Programmer Humor@programming.dev – 746 points –
74

You are viewing a single comment

For real though, containerization isn't the only way to separate applications from each other but totally fine, it's the "It works on my machine, so here's my machine" mentality that doesn't fill me with confidence. I've seen too much barely-working jank in containers that probably only get updated when a new version of the containerized application itself is released.

Nix user arrives to the room.

Can you elaborate?

Nix can build you a bit-to-bit exact environment for your app. It is a superior environment, but is hard to use in the beginning and users can feel snobby sometimes. It is awesome, but YMMV.

How do you separate Nix programs from the rest of the system?

It creates a set of symlinks so every program sees exactly the dependencies it needs.

https://nixos.org/guides/nix-pills/09-automatic-runtime-dependencies#automatic-runtime-dependencies

You can also create a container:

https://nixos.wiki/wiki/NixOS_Containers

Or you can create reproducible docker containers with nix:

https://dev.to/anurag_vishwakarma/a-better-way-to-build-reproducible-docker-images-with-nix-2k59

The secret sauce with nix is reproducibility. If it builds once, it will continue building exactly like that forever. Bit by bit.

That's very interesting, I was aware of how NixOS separated dependency versions but I didn't know it natively supported containers.

I like containers. But they do have a habit of nurturing cludgy temporary hacks into permanent infrastructure, by sweeping all the ugly bits under the big whale-shaped rug.

What gets me is people migrating from VMs treating it like an entire host machine.

There is a lack of knowledge among developers regarding precompiling assets and classes (if interpreted), and people are trying to do too much in startup scripts.

Another thing I hate is wrapping the entire process in a script because people want to kill the main process without restarting the container. Yikes!