With the advent of docker, there is a spurt in Container as a Service (CaaS) offerings from multiple cloud providers – Google, Amazon, IBM, Rackspace, Joyent to name a few.
What exactly is Container as a Service, and how does it relate to IaaS, PaaS and SaaS, the most commonly used cloud computing service models ?
One can think of CaaS as a subset of IaaS. In case of CaaS, the granularity of a compute resource is ‘container’ instead of a virtual machine (VM) or baremetal. The container in-turn can be running on baremetal or VM. Therefore PaaS and SaaS can be using containers or VMs or baremetal as compute resources, depending on the underlying IaaS layer.
Conceptually a CaaS cloud looks like the following:
The ‘compute host’ can be a baremetal host or a virtual machine on which containers will be provisioned and run.
The key component is the container orchestrator. This is the component responsible for scheduling and provisioning of containers on baremetal hosts or virtual machines, multi-container management, service discovery, configuration management etc.
There are multiple options available today. Some of them are listed below:
This is an Openstack nova virt driver for docker containers.
It’s an opensource project from Google providing container lifecycle management like deployment, maintenance, scaling etc.
Docker-machine & docker-swarm :
Docker-machine allows provisioning of any host with the docker engine, whereas docker-swarm is a clustering engine, that creates a resource pool of all the hosts provisioned by docker-machine.
It’s a deployment and cluster manager for docker containers from CoreOS.
It’s a distributed cluster manager from Apache.
It’s a python library for creating multiple docker containers in parallel.
There are many more. Honestly, it can be confusing if you are setting up your own CaaS. As an end-user ofcourse, it really doesn’t matter what is the back-end.