Docker Support Done Right
We believe in simplicity. We’re on a mission to make the deployment and the application developement easier and safer. That's why months ago, we started to work on Docker support, hand in hand with Docker Inc, to allow “Dockerized” apps on Clever Cloud.
Deploying Docker apps on Clever Cloud is as easy as deploying a regular app: just add a Dockerfile and git push.
Why docker support is important for Clever Cloud users?
We support a lot of languages. But some of our users have specific needs for their applications. Now they can build customs stacks without a specific support on Clever Cloud, thanks to the 13,000+ images available on Docker Hub.
While the PaaS way of deploying apps is awesome for standardised applications, it can become a hurdle when having to deal with customized stacks (I'm looking at you, Haskell). Docker fills the gap between PaaS and IaaS by letting Clever Cloud users manage their software stack while taking advantage of most of Clever Cloud features: push to deploy, autoscalability and zero downtime updates.
Has Docker become Clever Cloud's tech core?
Nope. Docker comes in addition to the other runtimes we are already providing.
How does it work?
Basically, Docker provides tools and standards to manage containers. We're fond of it at Clever Cloud, because it brings a simplicity in management through a solid standard.
Containers bring simplicity at the expense of some isolation: the kernel is shared, network has to be handled more carefully, and so on. While it's a perfectly acceptable tradeoff for architectures where all the applications are trusted, as a hosting company we can't make it.
Clever Cloud runs untrusted third party code (your code) and containers don't offer the level of isolation needed for that, that's why every dockerized app runs in its own Virtual Machine.
The best news is that it's not at the expense of performance.
Virtual Machines you said? No chance, you'll get no perfs from it, Monsieur.
At Clever Cloud, we handle all the stack, especially the virtualization. First of all, our VMs are based on KVM and Virtio. These technologies allow for a very reduced overhead both on CPU (through specific instructions designed for virtualization), and on networking through Virtio's direct networking access.
In addition to that, since the network isolation is handled by the VM, we can run Docker networking in host mode. By default Docker runs in bridge mode, where all the network interactions happen behind a NAT layer, which has a performance cost.
Finally, both the hypervisors and the guests run finely-tuned, bare-metal OSes, with only what's needed, and nothing more.
All in all, new VMs are up and running in a few seconds' time, and offer excellent runtime performance.
How to get started?
Head up to the doc, your first dockerised application on Clever Cloud is one Dockerfile away. If you want to test it right now, you can fork and deploy to Clever Cloud a small hello world demo we made for the last Human Talks event we've made.