Many organizations use cloud services. Many deploy network services as containers. And now, many are combining the two. Let’s look at the advantages of running containers in the cloud.
Yes! It has to be. There is no way to do what is defined as cloud computing without virtualization!
We can nest virtualization as if it were a matryoshka or Russian nesting doll. A major cloud provider runs a Type 1 hypervisor on their hardware. Something like Xen at Amazon Web Services (or AWS) or Hyper-V at Microsoft Azure.
Virtual servers running there can then support virtualization themselves. They could run a Type 2 hypervisor like QEMU or VMware Workstation, and so you could put a full operating system inside of that, and so on. (within reason!) However, for many organizations the right approach involves containers.
IMAGE: MATRYOSHKA, FROM https://commons.wikimedia.org/wiki/File:Russian-Matroshka_no_bg.jpg OR SIMILAR
Containers are a relatively lightweight form of virtualization. They’re called “operating system virtualization”. However, I think that term confuses people.
To me, the important point is that multiple containers share an operating system.
The hosting operating system boots up and so its kernel is running on the hardware and managing processes. Then, each container runs in an isolated environment. Therefore its processes, its file system, and its user and group identities are unique to that container.
A process can tell that it’s within a container. But it can’t tell whether any other containers are running at the moment, and it can’t see any details of what they are doing.
Containers actually make things simpler.
Let’s say you have four groups developing web-based services. You could give them each their own physical server. But now you have to maintain four servers. First of all, add the needed development and service software. Then, on a continuing basis, patch the operating system, applications, and shared libraries. Meanwhile, analyze the security risks and maintain cautious configurations.
However, those groups are trying to develop specific web-based services. All that system administration just gets in their way. They aren’t operating system specialists, and they aren’t interested in that part of the job. So, how well will that go?
Let’s try containers. Now you maintain just one server. Each development group controls their own container. That’s all they want to do, and they should be well qualified for the job. The containers share a common environment of operating system kernel, applications, and libraries.
Once you have built a container, you can easily copy it to another platform and run it there. The Docker system makes container management even easier.
Docker-based container environments can grow. Before long, you need a server cluster where you can run all these containers. The Kubernetes system automates Docker container deployment, scaling, and management across clusters.
“Portable” doesn’t mean “but only so far.” You can develop containers in-house and then deploy them to cloud-based servers.
You certainly can do it just like that, first deploying IaaS (or Infrastructure as a Service) servers in a cloud, and then deploying your containers onto them. But now we have returned to our earlier problem. You would have to maintain those servers. There’s an easier way.
The major cloud providers have services where they handle the underlying operating systems. That frees up your time, creativity, and budget for the containers themselves.
I used Docker as my example container management system, and Kubernetes as my example cluster and container orchestration manager, because the “Big Three” cloud providers offer those.
Docker and Kubernetes are available on all three, and other management tools including DC/OS, Docker Swarm, rkt, and others are also available. All three support automatically scaling compute clusters to host your containers.
All of these are true cloud services. You deploy on demand, use web panels and command line and programming interfaces, and then you only pay for what you use.
If you’re new to cloud computing, check out Learning Tree’s Introduction to Cloud Computing course.
If you already use containers, then it’s easy to deploy them into the cloud environment. All three providers have documents showing you how to convert an existing server into a container. Follow the links from the AWS, Google, and Microsoft Azure introductions.