5 ms·
Yeah Docker and friends exist basically because the industry is blissfully unaware of nice things like Nix.
by _ibu9 10y ago
Yeah Docker and friends exist basically because the industry is blissfully unaware of nice things like Nix.
- cookiecaper 10y agoGotta be careful with this type of heresy! You won't get hired at a trendy VC-backed company if you're harshing the buzzwords. ;)
- moosingin3space 10y agoNot exclusively. If I want to pay someone for support for running NixOS-based servers, who do I pay? Does NixOS have a support term anywhere near Red Hat (or even Ubuntu)? What about the awkward CLI UX? What about a turn-key solution to deploy my app? These questions are reasonably well answered with Docker, less so with Nix/NixOS. I say this as someone who really likes the ideas of Nix. In fact, I see the benefits of Docker as being solved reasonably well by Nix: * Isolation of multiple applications on the same server are handled by NixOS containers, which use the same configuration as a NixOS system and use things like cgroups and namespaces, * Immutable/declarative deployments (through things like docker-compose) are elegantly handled through nix-expressions, * Multiple versions of a dependency are handled through the nix store. I think a good measure would be to provide good tooling for generating Docker images from Nix, and this is what `guix pack` can do today. Once Nix has gotten over these pains, it can become a good developer tool, and from there, ops may choose to adopt it.
- equalunique 10y agoThis company uses Nix & recently funded certain features. If you really want some help with Nix, they might have expertiese for you: http://www.tweag.io http://www.tweag.io
- moosingin3space 10y agoI was making a point, not actually looking for purchasing a service like this.
- kmicklas 10y ago> If I want to pay someone for support for running NixOS-based servers, who do I pay? This is exactly my point; the industry is blissfully unaware of the concepts themselves behind Nix. I'm not saying Nix itself is the ultimate piece of engineering but it's clearly ahead of industry thinking. > What about a turn-key solution to deploy my app? That's the idea of NixOps.
- moosingin3space 10y agoNixOps looks great. I'm glad to see there's work in that direction -- turn-key deployment is something that Docker, at least in theory, can do well.
- timclassic 10y agoNixpkgs includes support for generating Docker images: https://nixos.org/nixpkgs/manual/#sec-pkgs-dockerTools https://nixos.org/nixpkgs/manual/#sec-pkgs-dockerTools I've used it lightly and so far it has worked well.
- icebraining 10y agoI disagree, the advantage of Docker is that you can slap an image together by doing essentially what you were doing - running a couple of apt install commands, pip install -r requirements.txt, copy a few files and it's done. You don't need to learn a new configuration language, or package all your dependencies yourself, or try to understand a new filesystem layout when you enter a container. I find Nix and Guix more interesting than Docker, but there's more to the latter's popularity than lack of marketing by the former.
- sedachv 10y ago> I disagree, the advantage of Docker is that you can slap an image together by doing essentially what you were doing - running a couple of apt install commands, pip install -r requirements.txt, copy a few files and it's done. IMO that is the problem with Docker. People think that Docker somehow does anything for dependency management. It is an illusion because when you make or move a project into Docker you are essentially starting a new project, and new projects do not have dependency management problems. In a couple of years as people start upgrading components in their Docker-hosted apps dependency management and version conflict problems are going to appear, and will now be harder to resolve because image layering adds many possible failure points (not just at each layer, but also interactions between layers). Docker is a convenient way to deploy Linux containers, but IMO it is a ticking time bomb when it comes to dependency management.
- _ibu9 10y ago> the advantage of Docker is that you can slap an image together by doing essentially what you were doing - running a couple of apt install commands, pip install -r requirements.txt, copy a few files and it's done. This is exactly what Nix expressions consist of, expect actually reproducible. > You don't need to learn a new configuration language, or package all your dependencies yourself Isn't this exactly what Docker and friends require...? > or try to understand a new filesystem layout when you enter a container. It wouldn't be new if it was standard as it should be.
- icebraining 10y agoThis is exactly what Nix expressions consist of, expect actually reproducible. Wait, really? You run "apt-get install X Y Z" in a Nix expression? Or are you saying they're equivalent? Because my point is that Docker runs the exact same commands. Isn't this exactly what Docker and friends require...? Sort of, but not really. Dockerfiles are extremely basic, and most of the work is done by shell commands, which developers are know and use. As for packaging all the dependencies, well, yes, but as a big ball of mud. Nix & Guix encourage you to use different packages and connect them. Dockerfiles are literally just dumb container in which you shove everything (using the same commands you already knew). It wouldn't be new if it was standard as it should be. And if my grandmother... well, you know the rest. ================= Don't get me wrong, I'm not praising Docker, on the contrary. I'm just explaining why I think it's more popular than Nix/Guix.