During this week I heard a lot of buzz around Docker. It was not such a surprise, given that the DockerCon took place in San Francisco just a few days ago. It has been an amazing couple of weeks with a lot of interesting discussions about this quite recent software that is spreading more and more around the world and is getting a lot of hype and interest. So much interest that a couple of days ago Google announced a piece of interesting news with regard to support for it on its cloud platform.
Quite a lot of stuff, then: let’s take it one bite at a time.
So, what is this Docker thing?
Shortly, Docker is an open source software thought for developers and sysadmins. It is targeted at automating the build, deployment, and run of applications inside software containers. It is built on top of the well known LXC (Linux Container), which is another software which on its turn uses Linux kernels’ cgroups and namespace support to provide an isolated environment for applications. Seen from a developer perspective, using Docker you can package an application and all of its dependencies in a virtual container that can run on any Linux server, and on other OSes as well. This gives you a huge amount of flexibility and portability on where the application can run, starting from your own laptop up to the public cloud.
Docker consists of two different elements. The first one is called Docker Engine. It’s a portable, lightweight runtime and packaging tool. It’s the component which actually takes care of creating containers and running the apps in them. The second one is called Docker Hub. It’s a cloud service for sharing applications and automating workflows. The combination of the two allows you to quickly assemble apps and the great, amazing advantage is that you can ship and run the same app, unchanged, on a laptop, on your data center, on your IaaS cloud service, everywhere else.
Since it works at a quite low level, developers can build an app in any language using any toolchain, and sysadmins will get standardized environments which abstract away differences in OS distributions and underlying infrastructure. And Docker does all of that in a really great way. I’m sure you got why everyone is so fond of it.
Kubernetes, Google’s latest idea to get full Docker support
Given the huge interest for Docker, Google took the wise decision to release improved Docker image support in Compute Engine about a month ago. The latest news is that they also added a set of extensions that allow developers to build and deploy Docker images in Managed VMs. If you want to try them up, sign up via the form Google made available.
But the news I like most is this open source container manager that Google announced under the name of Kubernetes. It allows you to deploy containers into a fleet of machines, providing health management and replication capabilities, making it easy for containers to connect to one another and the outside world. Google made it extensible, and open source too, and I expect that those two wise decisions will allow a lot of community contributions to flow towards the GitHub repository where the code is stored, and let the project grow fast. My hope is that other cloud providers will work on adding such a great support level on Docker. It’s an amazing project, in a phase of rapid growth, with a huge community behind it and an even bigger community of users and is likely to become the de-facto standard for containers.
Here at Cloud Academy, we’re doing a big effort to bring you the best content to start learning Google Compute Engine.