Docker's killer feature
joyent.com
joyent.com
Yes, that Open API is great but it does not seem relevant to CoreOS's criticisms.
To me, Bryan Cantril's highlighting of "Open API" as a counterpoint would make sense if CoreOS specifically stated that they will create a "closed proprietary API". I didn't think they stated that as an architecture goal. CoreOS wants to create a non-monolithic container system -- and presumably, their alternative will also be an "Open API".
Docker's "Open API" for flexibility doesn't allow you to "undo" how Docker internals would run as a pid on Linux. I'm genuinely confused as to why this Open API was brought up. My current interpretation is that it is almost a non-sequitur.
I'm new to Docker, so maybe there are some big wins surrounding the docker client/server architecture that I'm not realizing. But I already have tools in place to run commands on a remote server -- that's not the problem that I'm looking to Docker to solve. So if Rocket is able to get the containerization aspect working smoothly with fewer moving pieces, I'll count that as a point in its favor.
In fairness to Docker, I haven't had too much trouble so far pretending that "docker run" commands without the "-d" flag are just running the process in that PID. So the extra hidden complexity of really running it in another process and piping stdout back hasn't affected me in any negative way either.
https://coreos.com/docs/running-coreos/platforms/vagrant/
(CoreOS employee)
All of that aside, I really like Docker, for the API but also partly because of what the CoreOS people complain about, i.e. a relatively monolithic system.
I'm a big fan of modular systems myself and I completely get where CoreOS are coming from with Rocket. But sometimes, I just want to be able to use the tool. I don't want to screw around for hours/days/... to put all the pieces together.
The network overlay situation is a perfect example. I know there are different solutions out there, in fact I've been trying some of them out at home. But the truth is, I don't want to have/have time to deal with that stuff and I'd much rather get on with my original ideas.
Unfortunately in some situations, as beautiful as the theory and principles are, people justifiably simply want things to work out of the box. I find the criticisms on String Theory are a good example of that, whereby the theory is gorgeous, but in practice does not necessarily have the value it intends to. I digress.
I love the idea of a super-modular car I can put together myself, change pieces as and when I wish and so on, but most of the time, I just need to get to my destination.
Frustration is palpable when there's so much marketing of a technology that genuine engineering discourse suffers.
Docker and Joyent are businesses, and they're selling an idea to make money. If how they're selling the idea runs contrary to someone's "software philosophies", that someone has to contend with countering not just an intellectual argument, but also considerable (and often emotive, not educational) marketing.
This article — written by the CTO at Joyent — is essentially just marketing linkbait:
- It's titled with the catchy "Docker's Killer Feature". Killer. Feature.
- The first paragraph includes the phrase "CoreOS ... declared war"! People love wars! See also: "War on Christmas", "War on the Family", and Fox News.
The rest of the article is marketing filler. There's no deep dive on the API — having read the article, I don't even know whether Docker's "Killer Feature" is:
1) Actually an API vended by a library.
2) Some sort of IPC protocol.
3) A network protocol, or
4) Underpants!
And how is it different for CoreOS, Inc? They depend on a external product and they want to remove the dependency. That's fine. Smearing their ex-vendor isn't.
Is there some open source community beef I missed? Is forking/developing your own container product that evil? I somehow missed where Rocket equates directly to war on docker instead of pushing containers further into the mainstream by adding some differentiation to the space.
Joyent is building some way you can run Docker images on a Solaris kernel.
I frankly don't even care about the rest of the orchestration vs bloat stuff - I want a good API and good performance. The rest is secondary.
In fact, every Perl program has already been written, it is just a 'use' away.
But once you get familiar with Docker - yes the API is a killer feature.
Rocket on the other hand doesn't seems to be something someone might try out when he has 10 minutes spare time. Reading the specs and doc, makes me hesitant of trying it, creating an 'image' seems like a ton of work just to try it out. Yes there are some good ideas there, but it would be sad if there weren't.
I hope shykes & co see the light and break the "new" aspirations out from the core Docker container; having one binary is aesthetically pleasing but understandably bothersome to anyone who likes modularity (most devs & unix folks, afaict).