14 ms·
Docker is the single best thing to happen to software deployment in 20 years, not just because of what it did for eliminating "works on my machine" build proble
by AaronFriel 7y ago
Docker is the single best thing to happen to software deployment in 20 years, not just because of what it did for eliminating "works on my machine" build problems, but because of what it enabled. A huge ecosystem has sprung up around containerization, with immense value created for other businesses. Their "Docker for Windows/Mac" apps are one of the first things I install on any new dev machine.
It's unfortunate they didn't figure out a way to make money off the best thing to happen to building and deploying software in 20 years.
A lot of other people did, from the startups now selling value-adds to Kubernetes like Kong and Tigera and TwistLock (since acquired) and others, to the public clouds which all offer Docker-based build services, image registries, and PaaS deployment tooling, to Kubernetes itself which for most users today still relies on Docker.
- VonGuard 7y agoIt's a lot like Sun Microsystems and Java. That was a big improvement in the lives of developers, but the company behind it never really figured out how to make money on it.
- pulse7 7y agoSun made big money with Java through licensing. Any Java-compatible implementation vendor paid big money to Sun (including IBM, Azure, etc.).
- derefr 7y agoWas that really "big money"? How many vendors were there, and how many licenses did each end up paying for?
- wmf 7y agoIf you wanted to write your own JVM or port the JVM to a different OS you had to pay something like $1M. I wouldn't call it big money because there aren't that many OSes. J2ME phones also paid royalties (which led to the Android lawsuit).
- pjmlp 7y agoPlenty through the last 20 something years, some of them still going on. https://en.wikipedia.org/wiki/List_of_Java_virtual_machines https://en.wikipedia.org/wiki/List_of_Java_virtual_machines Google is the only one that worked around the licensing, and now we have our phones stuck on a mix of Java 6 - 8 subset.
- zmmmmm 7y agoI don't think it's a coincidence. A lot of the value comes from things being open and free, which enables rapid proliferation and ubiquity of the technology, but also drastically increases the complexity of making money out of it. It's one reason I'm really not a fan of the Silicon Valley model .... pick out the top 10 most important technology advances in the last 20 years and about half of them were uncommercialisable in the Silicon Valley sense.
- deleted 7y ago[deleted]
- streetcat1 7y agoYou mean Lxc and kernel namespaces is the best thing to happen to software in the last 20 years?
- tombert 7y agoThat's not entirely fair. Yes, LXC/OpenVZ is cool and does some awesome container stuff, but part of what makes docker so neat is more than just containerization. Everything is "stateless"; you can reproduce environments exactly across machines with dockerfiles and as such it lends itself well for local development, but also distributed deployment (such as docker swarm).
- streetcat1 7y agoYes. But I guess in 5 years or less there will be another runtime (especially now that the company is basically dissolved), while namespaces, etc will stay.
- tombert 7y agoI don't know that that's true; Google and Microsoft seem to have really started betting on Docker and, for better or for worse, they are big trend-setting companies, so I suspect it's more likely that one of them would purchase it and continue working on it before it just goes away.
- tssva 7y agoGoogle and Microsoft have really started betting on containerization. Neither has really started betting on Docker.
- tracker1 7y agoConsidering Google, Azure, AWS, DO, IBM and others all have cloud offerings centered around Kubernetes with Docker compatible containers, even if some of the tooling changes, I don't expect that "Docker" will really go anywhere. I would be surprised if the next step doesn't have it swallowed by one of the above companies (probably not DO though). Even for AWS Lambda, I use docker to build linux lambda packages on non-linux environments (docker for windows/mac). The easiest way to get a service up in Elastic Beanstalk is with a Dockerfile. Even if Docker (organization) does die, Docker (open source tooling) will live on for a very long time. And although I do like where podman and others are coming from, I don't think that it will displace docker in the long run.
- zantana 7y agoAlso known as "the Tivo Problem".
- mmcnl 7y agoHappy to read this here, somehow any topic related to Docker on here ends up with someone saying Docker brings nothing new to the table except for a propietary API and you could just as well use LCX or whatever. I can personally see from inside a big corporation how Docker (or containerization) has a huge impact in how "easy" it becomes for developers to build and run their own code. Without Docker everything new becomes a project on its own where you need to call in "ops" for the smallest of things. Not anymore. Ofcourse this has some other downsides, but in general it's a massive step forward.
- harikb 7y agoBeing in a technology focused site, there is nothing wrong in trying to give some credit to underlying technology and those who wrote it instead of just focusing on those who commercialized it.
- acdha 7y agoThis is not wrong but it leaves out a huge amount of hard work which wasn’t in the cool kernel hacking space. LXC is a significant accomplishment but Docker solves a number of other non-trivial problems which made mainstream adoption harder – it’s like the people who say Apple just copied someone else who had a touchscreen device without comparing the whole product.
- derefr 7y agoBut, frequently, commercialization feeds the "development" half of R&D. Companies like Docker Inc. often end up paying the lion's share of the salaries of the people doing the FOSS work to upstream and maintain the technologies they build upon.
- deleted 7y ago[deleted]
- eloff 7y ago> someone saying Docker brings nothing new to the table except for a propietary API and you could just as well use LCX or whatever Probably the same people who said Dropbox brings nothing new over rsync. Making something easier and bringing it to more people (two halves of the same thing) is a BIG value add. Often the majority of the value.
- choward 7y agoIt's a shame they are so hostile to developers. I wonder if they'll ever fix this: https://github.com/docker/docker.github.io/issues/6910 https://github.com/docker/docker.github.io/issues/6910
- lostapathy 7y agoYes - the unchecked bad attitudes by some of their maintainers is awful. I can't believe there isn't a major fork to docker-compose because of it.
- mcny 7y ago> I can't believe there isn't a major fork to docker-compose because of it. We don't need one. Red Hat is working on podman. https://podman.io/ https://podman.io/
- noodlesUK 7y agoPodman is great! It plays much nicer with the rest of my system and doesn’t require root for things that shouldn’t require root! Additionally (afaik, I don’t really use kubernetes) it maps better into kubernetes models of things with pods and kube.yml etc.
- windexh8er 7y agoRootless support has been in BuildKit since 2018. I feel like all of the tools RedHat rebuilt, that didn't really offer anything new and in a lot of cases offered a whole lot less, is centric to very diehard RedHat oriented folks. If anything we should hope that all of the Docker bits stay where they are because I surely trust RedHat far less under IBMs leadership. And, no. Podman doesn't offer any advantages in the Kubernetes ecosystem by mapping better into k8s "models".
- Alupis 7y agoThe real problem was the downright hostility towards everyone outside of Docker... with shykes (Solomon Hykes) leading the belligerent charge on the community at large. The countless arguments shykes got into with potential users right here on HN, and all the new fake accounts that would suddenly crop up to defend his positions. It was transparently an attempt to wield HN as a weapon against anyone that questioned what Docker was doing. Starting with the outright lies about what Docker could or could not do (Docker does X, Y, and Z - but Y and Z were actually still in development), to the outright refusal to play nice with the open source community (remember the Docker vs. CoreOS fights for standardization of container formats?). If Docker didn't invent it, or think of it first, it was a terrible idea and had to die. They even went so far as to start a convention before they had a production product. Then Kubernetes, Rocket and all the other container platforms and tooling came along and ate their lunch. Why did people adopt them so quickly? Because they played nice with each other and made it easy to build your system as you wanted it... not just as Docker wanted it. The entire thing was a money grab. And when things went sideways, they made some terrible decisions (the entire Moby fiasco). It's not surprising Docker finally fell...
- gigatexal 7y agoI agree! I feel so empowered by docker and docker-compose and even really enjoyed docker swarm although everything is k8s now
- trpc 7y ago> Kubernetes itself which for most users today still relies on Docker Not anymore, over the past couple of years Kubernetes slowly stripped Docker most of its power to the point that Docker can be totally removed from k8s clusters. And this will be widely be the norm in a couple of years or so
- AaronFriel 7y agoI wrote: > which for most users today still relies on Docker Was that inaccurate? Are most users manually running Kubernetes clusters with an alternative runtime these days?
- manigandham 7y agoDepends but most K8S distributions and managed offerings are no longer using Docker as the runtime.
- amouat 7y agoI'm not sure that's true. GKE is still using Docker at least. It will move to containerd in the next few versions I expect.
- xorcist 7y agoI don't understand that argument. Docker really doesn't help with application packaging. A Dockerfile is rudimentary at best, and ends up mostly a bash script for most people. It also hasn't changed in years so it's obviously not a focal point for development. What Docker did provide that other packaging tools didn't was free image hosting for anyone, no vetting, no strings attached. Of course that was a major hit with developers. Free hosting often is, especially when well integrated with development tooling. The thing is that it sets you up for a nice acquisition. But for some reason Docker, Inc. felt they wanted to go the VMware Way instead and sell enterprise tools to enterprise customers. Those are two different strategies that will never be reconciled. It makes sense for them to shed that part and double down on Docker Hub and the Mac/Windows tooling.
- heinrichhartman 7y ago> Docker really doesn't help with application packaging It does. You can do crazy shit like this with Docker containers: thinking about the time we created docker at work in 2009: nobody could remake our centos4 build machine for our C++ code so we shut it down, imaged the file system into a .tar.gz, and made our makefiles transparently extract it & build via chroot. so absolutely fucking cursed -- @stdlib https://twitter.com/stdlib/status/1192461409549987841 https://twitter.com/stdlib/status/1192461409549987841 It's essentially still exactly what docker allows you to do: tar-up your whole f'ing disk, and run it in a chroot somewhere else. Try doing something like this with yum. Good luck. Of course it's horrible. But now, you can get away with it.
- lstodd 7y agoHow is this different from running the same tarball under lxc or kvm or on whatever cloud provider's vm or just in a chroot? What has Docker to do with this?
- m_mueller 7y agoDockerfiles and docker-compose are IMO decent ways to abstract build and runtime environments. For our current development life cycle I combined it with a Makefile and some common scripts that streamline all life cycle commands across all services. With that, it's straightforward to set up systems where everything is commitable to VCS except docker setup and secrets.
- tuldia 7y agoNo, it just made something that existed 18 years ago become more popular. It's just a rootfs compressed tarball. Running on top of Linux technology. Docker was always a brittle tool with lots of limitations and huge compromisses. Want to ${FOO_PORT:-1234}? Forget about it. Running random stuff as root? Why not? It also made very easy to consume and produce junk/snowflakes. Every docker image place its files/configuration/data in a special place. FHS? Who need that? People have been running, packaging and distributing software more efficiently and more secure way before docker even existed. Another tool that made existing technology more popular is Kubernetes. But it did a better job in this "container" space.
- tuldia 7y agoThis is an example of "unpopular" post. As expected, it received no counter arguments.
- raesene9 7y agoThere is an easy counter argument which is the post you were replying to talked about the impact Docker had had, it made no arguments about Docker's technical merit. You replied by talking about your perceptions of Docker having a bad technical design. These two points are entirely orthagonal, which is why I'd guess your comment got downvoted. It is frequently the case that the most popular technology is not the one with the "best" technical design. For example the popularity of JavaScript or PHP. Neither is one that is regarded generally to have good technical design, however they have had a huge impact.
- tuldia 7y agoI know. This was a social experiment. Thanks for your comment, I appreciate that! Both tools you mentioned are great and kinda relate to this experiment too. The existence of docker and how it was developed and absorved by people brought nice things too. The kernel had to workout some areas. The tool itseft is ok. I use something like this: . |-- Dockerfile |-- README.md `-- rootfs |-- etc | `-- sample | `-- sample.conf `-- usr `-- bin `-- sample 5 directories, 4 files But I'm not talking about that. For me is just interesting, you know, the tool itself doesn't matter, one can do that with any tool. This experiment was to measure how humans entering an existing field will react... just like language has been shaped. It was a bit sad that nobody was curious enough to talk about ${FOO_PORT:-1234} and why we should deprecate (links) or about "defaults". It was a success, though.
- sagichmal 7y ago> Docker is the single best thing to happen to software deployment in 20 years Something like Docker may eventually hold this title, but Docker itself? Certainly not. It was simply too poorly executed, both strategically but especially technically. Running production workloads in Docker containers was, is, and will be remembered as nothing short of professional negligence. Often expedient, sometimes worth the risk, but always a liability.
- empath75 7y agoWhat do you base this on?
- asadlionpk 7y agoSure docker is not perfect but isn't running docker containers mainstream practice now? I think your response is a bit of exaggeration.
- wokwokwok 7y agoHaha... for production workloads? Definitely not. Docker is a lovely developer tool, but it’s not, in my experience, ever been (even with swarm when that was a thing) suitable for production workloads. Containers: yes. Docker: that’s a container runtime, and definitely not mainstream for production workloads.
- marktangotango 7y agoI’ve wondered about this myself. What is the solution? On premise cloud like openstack?
- derefr 7y agoI think, when people are talking about "using Docker", they're talking about using Docker tooling to build and push/update/pull Docker images (actually OCI images) around. They're not really talking about running OCI images "on the Docker daemon container runtime." But to most people, OCI images are "Docker" and if your cloud scheduler/hypervisor can run them then it's "a Docker runtime."
- tanilama 7y agoLinux doesn't make money on its own. Not sure why it is a surprise to people that Docker can't monetize as a For-business entity
- StreamBright 7y ago>> eliminating "works on my machine" build problems This was eliminated way before Docker. Amazon had this problem solved around 2009 when it was not a new thing in the company. LXC also predates Docker. I think you are talking about immutable images that can run on any OS. This is what Docker introduced. This is not as ground breaking as people try to make it, this is why commercial success avoided them at the first place.
- senderista 7y agoIf you mean Apollo, that requires mutating global system state in extremely fragile, error-prone, and unrecoverable ways. It's practically the opposite of "immutable infrastructure".
- StreamBright 7y agoNot sure which part of Apollo you are talking about. The configuration management?
- iamgopal 7y agoAny other single example where a company created a product, enabled massive usage and still struggled financially ?