Docker is a rather popular open source project.

Yet the problems it is solving (around code isolation and environment reproducibility) are not new and have been solved before with many other techniques such as virtual machines, chroot jails, virtual hosts and environments, static linking and bundling of packages, or distros such as Nix and Guix, etc.

So what would be the reasons that made Docker so popular?

What does it do differently from a technical or community perspective?

Note: I am not looking for opinions but rather for facts properly supported with references when possible.

  • 1
    If you are downvoting, please be nice and add a comment to explain why – Philippe Ombredanne Jan 27 '17 at 9:49
  • 2
    Note that this question is part of an effort to expand beyond licensing: meta.opensource.stackexchange.com/questions/763/… – Philippe Ombredanne Jan 27 '17 at 11:40
  • The topic isn't the problem, the problem is it's too broad and too opinion based. You say you're not after opinions, but unless you ask about something specific then which facts the answers focus on is still opinion based choice. – curiousdannii Jan 27 '17 at 14:54
  • 2
    Asking a question "why is X popular?" is a little bit like asking why people think apples are better than bananas. There's just too many possibly answers, and personally speaking, asking for "facts" or "references" don't exactly help. You can ask for data under the statistics tag, but not in this format. An answer would have to be very long to address your question completely when using facts. For this reason, I'm closing this question as too broad. – Zizouz212 Jan 27 '17 at 20:27
  • Docker is one of the largest pile of crap of any software I've ever faced; the arrogance, ignorance and incompetence of its developers hits any records I've seen until now; I simply can't understand, how can be so manywhere used... they should be ignored and expelled from the reality. – peterh - Reinstate Monica Jun 20 '18 at 12:02

Speaking as someone who doesn't like docker (or containerisation in general) and thinks it gets wildly overused in places it doesn't belong, I also have to say it's very impressive.

chroot jails give you filespace separation, but not network namespace, PID space, or any of the other separations that full virtualisation brings. Full virtualisation gives you near-total separation from other instances running on the same hardware, but you have to set aside a kernel's-worth of memory (and to a lesser extent, CPU) for each VM spun up. Containers in general give you a higher level of separation than anything before (save virtualisation) offered, but unlike full virtualisation they're so light that any old desktop can accommodate tens of them without pain.

Docker in particular adds to that copy-on-write file systems and thereby the ability to quickly and cheaply sandbox any number of different code changes, before deciding which to keep and bake into the FS image, and which to discard and roll back. Though I am not a developer, I can dimly see how powerful a technique this must be for ultra-rapid prototyping.

You haven't asked about the problems, so I won't start into my production-sysadmin rant. But even as someone who doesn't like some of the ways these tools are used, it seems very clear to me why they've spread so rapidly, and become so popular. If I had to do what developers do, I think I'd find them a superb tool, too.

| improve this answer | |
  • If you care to elaborate on problems in your answer that would be great. – Philippe Ombredanne Jan 27 '17 at 11:41
  • 2
    @PhilippeOmbredanne thank you for the invitation, but I will have to think hard about that. It is easier to be nice than negative about things one dislikes, without also being ranty and bitter, and I don't think anyone wants to read my bitter old sysadmin rants. – MadHatter Jan 27 '17 at 11:47

Not the answer you're looking for? Browse other questions tagged or ask your own question.