Someone at Rancher must have some cattle in the middle of Arizona or in the backcountry of California. Or one of their VCs might be in Montana sitting in a big ranch while Docker is eating the IT world. In any case, this post is short and sweet like veggies and not like cattle (TFW) and is about Rancher and the newly announced RancherOS. Check out the rancheros announcement.
Let's keep this short, shall we? Docker is great, but it is a daemon running on a single host. Since you want to scale and operate multiple servers, you need something to manage your Docker containers across multiple hosts. Several solutions are emerging, of course Docker Swarm but also Kubernetes, Lattice from Cloudfoundry and even Apache Mesos. Rancher is one of these cluster management solutions for Docker. It does some nice things like cross-hosts container linking through a custom built network overlay (think Flannel, Weave, Socketplane).
You can use Rancher with any set of Docker hosts. However, a new type of operating systems have started to appear: Container optimized OS. Or Just Enough Operating System for Docker; CoreOS, ProjectAtomic from RedHat, Ubuntu Snappy fit in that space. They aim to provide rolling atomic upgrades to the OS and run everything in it as a container. No more package manager, magic happens and you are always up to date. Package all your apps in containers, and use Rancher to run them in your cluster. End of story. Wait, enters rancherOS.
A couple lines of bash make all the talking:
$ git clone https://github.com/rancherio/os-vagrant.git $ cd os-vagrant $ vagrant up $ vagrant ssh [rancher@rancher ~]$ docker version Client version: 1.5.0
The next logical question is of course....drum roll... Can I run rancher on rancheros. RinR not R&R ? And the answer is a resounding yes. I expect Rancher to come out in the next weeks maybe months with a solid product based on the two.
rancherOS is a super minimalistic OS exclusively for Docker. It goes further and also runs system services as container themselves. And I will let @ibuildthecloud talk about systemd and Docker as PID 1.
[rancher@rancher ~]$ sudo system-docker ps CONTAINER ID IMAGE COMMAND ... NAMES 32607470eb78 console:latest "/usr/sbin/console.s ... console d0420165c1c0 userdocker:latest "/docker.sh" ... userdocker 375a8de12183 syslog:latest "/syslog.sh" ... syslog d284afd7f628 ntp:latest "/ntp.sh" ... ntp
If you are interested to try out RinR then check out the Ansible playbook I just made. You can use use it to deploy a cluster of rancherOS instances in AWS, and use one of them as a master and the others as workers. The master runs in a container:
$ docker run -d -p 8080:8080 rancher/server
And the workers can register with their agent:
$ sudo docker run --rm -it --privileged -v /var/run/docker.sock:/var/run/docker.sock rancher/agent http://<master_ip>:8080
Once all the workers have registered you can use the UI or the API to start containers.
As you can see I tested this at web scale with two nodes :)
In this very early super bleeding-edge testing phase (as you can tell in my good spirit today), I did find a few things that were a bit strange. Considering rancherOS was announced just last week, I am sure things will get fixed. Cloud-init support is minimal, not able to add second network interface, support for both keypair and userdata at the same time seems off. The UI was a bit slow to start and building the overlay was also a bit slow. It is also possible that I did something wrong.
Overall though, rancher is quite nice. It builds on years of experience in the team with developing CloudStack and operating clouds at scale and applies it to the Docker world. It does seem that they want to integrate with and provide the native Docker API, this would mean that users will be able to use Docker machine to add hosts to a rancher cluster, or even Docker swarm and that launching a container would also be a docker command away. How that differentiates from Swarm itself is not yet clear, but I would bet we will see additional networking and integration services in Rancher. Blurring the lines with Kubernetes ? Time will tell.