There are several ongoing projects to orchestrate deployment to a cluster of multiple docker hosts. Docker is designed to be easily dropped into a distributed system, which helps.
For example, there is an Openstack integration [1], Hipache and Nginx integration for load balancing [2] [3], and I know several people are exploring integration with Apache Mesos and Zookeeper. There's also a Velociraptor/Docker integration [4].
Lastly, I've seen a lot of ops teams plug docker into their own deployment tools, but those are generally not open-source.
Feel free to drop by the IRC channel (#docker@freenode) to chat some more!
Velociraptor does use LXC containers though, and provide the same kind of buildpack support as Dokku, plus a nice dashboard with streaming updates on your processes and some help for managing all the config for your instances (if 2 apps use the same database, you only have to record its URL in one place).
We're running dozens of apps and hundreds of instances on Velociraptor at YouGov, but it still has plenty of rough edges.
I did see the openstack Docker integration and it seems like a very interesting prospect. Hopefully something that will be integrated into the core Openstack project (although perhaps it might be better to integrate LXC into Openstack and then feed Docker through that).
The one thing I haven't seen any real solution for is the scaling/autoscaling portion of the equation. I think if that can be solved for, the rest would just be window-dressing on top of the Docker core.
First, OpenStack is a poor abstraction for what most people want. I don't even think it's worth bothering with if you can help it. Docker is what people should (and will) be building tools around instead of OpenStack. Docker integration in OpenStack is neat and even fun, but to me a distraction.
Autoscaling is interesting because it's only one part of a more complex problem of distributed orchestration. There might not be a good general purpose solution to this for a while. Every organization has different policies and requirements for scheduling resources. Docker was designed to be driven by any sort of automation at that level, but specifically avoids solving that problem.
But there's plenty out there to help you put together this solution for yourself. I'm curious what exactly you're waiting for in a solution.
Many people want to run a certain piece of software in its own machine and docker allows that. Some people thing OpenStack is the right choice for that. OpenStack is great if you are running your servers through AWS, but you want to transition to a self hosted system then you would use OpenStack. In other words its great for building a IaaS but not a PaaS
Most people don't realize it but they just want to run a process. That's where the computation is defined that you care about. And in many cases, you want to run a long running daemon process. So why are we futzing around with hosts and virtual machines? If all you want is to run managed processes in a cloud (which is what you should want), then OpenStack is unnecessary. You could just write automation around Docker, regardless of whether you're using EC2 or physical servers.
Only through libvirt, which by design only exposes the lowest common denominator among all supported backends. Docker needs its own native backend for the same reason Xen has its own: so it can do more cool stuff.
See [1] and [2] for more details. It looks like the blueprint just got approved, too!
Comments
There are several ongoing projects to orchestrate deployment to a cluster of multiple docker hosts. Docker is designed to be easily dropped into a distributed system, which helps.
For example, there is an Openstack integration [1], Hipache and Nginx integration for load balancing [2] [3], and I know several people are exploring integration with Apache Mesos and Zookeeper. There's also a Velociraptor/Docker integration [4].
Lastly, I've seen a lot of ops teams plug docker into their own deployment tools, but those are generally not open-source.
Feel free to drop by the IRC channel (#docker@freenode) to chat some more!
[1] http://github.com/dotcloud/openstack-docker [2] http://index.docker.io/u/samalba/hipache [3] http://github.com/dotcloud/hipache [4] https://bitbucket.org/yougov/velociraptor
Velociraptor author here. We don't yet integrate with Docker, though would like to once there's some kind of standalone mode (see https://github.com/dotcloud/docker/issues/503 and https://bitbucket.org/yougov/velociraptor/issue/14/investiga...).
Velociraptor does use LXC containers though, and provide the same kind of buildpack support as Dokku, plus a nice dashboard with streaming updates on your processes and some help for managing all the config for your instances (if 2 apps use the same database, you only have to record its URL in one place).
We're running dozens of apps and hundreds of instances on Velociraptor at YouGov, but it still has plenty of rough edges.
Velociraptor is def a cool project.
There's also Gaffer by Benoit Chesneau [1], a distributed process manager which is being integrated into Docker.
[1] https://github.com/benoitc/gaffer
I did see the openstack Docker integration and it seems like a very interesting prospect. Hopefully something that will be integrated into the core Openstack project (although perhaps it might be better to integrate LXC into Openstack and then feed Docker through that).
The one thing I haven't seen any real solution for is the scaling/autoscaling portion of the equation. I think if that can be solved for, the rest would just be window-dressing on top of the Docker core.
First, OpenStack is a poor abstraction for what most people want. I don't even think it's worth bothering with if you can help it. Docker is what people should (and will) be building tools around instead of OpenStack. Docker integration in OpenStack is neat and even fun, but to me a distraction.
Autoscaling is interesting because it's only one part of a more complex problem of distributed orchestration. There might not be a good general purpose solution to this for a while. Every organization has different policies and requirements for scheduling resources. Docker was designed to be driven by any sort of automation at that level, but specifically avoids solving that problem.
But there's plenty out there to help you put together this solution for yourself. I'm curious what exactly you're waiting for in a solution.
How exactly is OpenStack a poor abstraction for what people want?
Many people want to run a certain piece of software in its own machine and docker allows that. Some people thing OpenStack is the right choice for that. OpenStack is great if you are running your servers through AWS, but you want to transition to a self hosted system then you would use OpenStack. In other words its great for building a IaaS but not a PaaS
Most people don't realize it but they just want to run a process. That's where the computation is defined that you care about. And in many cases, you want to run a long running daemon process. So why are we futzing around with hosts and virtual machines? If all you want is to run managed processes in a cloud (which is what you should want), then OpenStack is unnecessary. You could just write automation around Docker, regardless of whether you're using EC2 or physical servers.
Openstack already support LXC.
https://wiki.openstack.org/wiki/HypervisorSupportMatrix
Only through libvirt, which by design only exposes the lowest common denominator among all supported backends. Docker needs its own native backend for the same reason Xen has its own: so it can do more cool stuff.
See [1] and [2] for more details. It looks like the blueprint just got approved, too!
[1] https://blueprints.launchpad.net/nova/+spec/new-hypervisor-d...
[2] https://github.com/dotcloud/openstack-docker/blob/082fac0c55...