Docker itself is mostly targeted as a tool for developers: you, the developer, dockerize your application, resulting in a container-image. Sure, that container-image then has to get deployed by someone (who isn't necessarily you), but the reason it's getting deployed at all is that a developer, at some point, made a decision to use Docker as part of the development process. Everyone else has to just deal with that.
Docker Swarm, meanwhile, is infrastructure, pure and simple. Developers don't touch it; ops people do. And ops people have very different opinions on what makes for a good piece of software than developers do. "Good UX" comes second to things like "stable" and "low overhead" and "predictable failure modes" and "configurable from a central source of truth."
Startups begin as small companies and small companies have a single team that decide how to develop and deploy. Usually developers deploy and take care of production too. What's convenient for development often trumps what's convenient for production, at least for the first months or years.
I (single dev at my startup at that time) adopted Docker 0.4 alpha and i have grown with the docker ecosystem. Today we pay for codeship,etc.
there is zero chance i would have a Docker buy-in if I could not get started then. This is the case with Docker Swarm and k8s today.
I'm struggling with k8s... while the evolution of Docker -> Docker Compose -> Docker Swarm is fairly easy and incremental.
In 2 years time when I have a large devops team... i will spend money on Swarm. Docker Swarm is conquering from the bottom. K8s still has a chance... but it is choosing to compete with OpenStack rather than Docker Compose, which is a big mistake IMHO.
It uses Consul under the hood and has so far been bulletproof. (They all have their drawbacks / idiosyncrasies).
It seems from the mailing list that at least Nomad will have that at some point, but I have not seen much talk about it from Kubernetes or Docker Swarm.
FC (Fibre Channel)
RBD (Ceph Block Device)
Cinder (OpenStack block storage)
HostPath (single node testing only – local storage is not supported in any way and WILL NOT WORK in a multi-node cluster)
This feature might make me give it a try though!
Might be time to take a closer look ;).
If you want insight into how the pieces fit together, the learnings from Kelsey Hightower's Kubernetes the Hard Way will certainly still map to bare-metal environments as well.
The best I've been able to do is use AWS EFS on my container hosts so that my ECS tasks with volume mounts find the same stuff everywhere.
I wouldn't run a database off it but it's been great for simple file synchronization across containers and container restarts.
I wonder if the open questions about instance management are solved by the "Docker for AWS" beta.
We are entering the commodity phase for orchestration software.
Blogs and HN comments are full of success stories on Swarm, Kubernetes, Mesos, Nomad and ECS.
There are also a few warnings, like the routing issue in this review, but it's simply a matter of time before those get sorted.
What's really going on here is that we are all learning how to handle complexities of distributed systems in the cloud. These new foundations means we can run more sophisticated apps easier and more reliably.
The new integrated swarm is a real game-changer in that it is much simpler to use compared to other solutions. With swarm, it's simply:
docker swarm init
docker swarm join --token <blah> <blah:2377>
I have no doubt that docker will eventually catch up though.
kubeadm init master
kubeadm join node --token=73R2SIPM739TNZOA <master-ip>
We could containerize, but we dont need that right now.
COPY file.jar file.jar
CMD java -Duser.timezone=UTC -cp file.jar com.foo
Using a container orchestrator for deployment is pretty much better than using a CM tool in every way... and it's certainly better than trying to half-ass one with bash scripts.
If you are all of the above yourself - tings are much easier
BOSH does rolling deploys, with canaries, out of the box.
At Pivotal we completely upgrade Pivotal Web Services to the latest Cloud Foundry within about a day of it releasing. PWS is our dogfooding the hard way: with a flagship platform that some of our customers have sue-you-to-dust-if-it-fails support contracts for.
Thousands of apps, tens of thousands of containers, thousands of VMS.
None of whom know that we restarted the entire infrastructure beneath them.
Disclosure: I guess that to the degree that Docker Inc realises that platforms are where the money is, my employers at Pivotal are competitors. But BOSH is still a fit for what you want.
When running on AWS you want CloudFormation controlling an AutoScaling Group for this.
As a footnote, BOSH works on AWS, OpenStack, vSphere, Azure, GCP and there are experimental CPIs for RackHD and Photon.
Or did I misunderstand that section?