Containers: Docker, Kubernetes and Azure
Containers are a kind of timeless design ideal.
But what are containers in web development?
Today we will be going over the container architecture; Docker, Kubernetes and Azure, Virtual machines and so on.
And If you are wondering whether or not you should learn to use containers you have come to the right place!
I will be explaining it here in simple terms.
Hopefully after reading you will have a better idea of what this stack is all about and if pursuing it further is something you’d like to do.
As a web developer, even if most likely you’ll never use containers at your current job or in your projects it’s always good to be in the know of at least the basics of it.
So let’s jump right to it if you agree!
What is a container?…
It is simply a standardized unit of software.
The idea of containers is similar to that of virtual machines.
If fact it began as an alternative to virtual machine architecture.
Essentially virtual machines allowed for greater user activity on the same server.
When you have multiple applications that use the same resources it’s more efficient to integrate this resources into your different applications from a single container.
A container is capable of hosting files like images, components, or even entire applications.
In the case of Docker it comes to integrate these contained pieces of software replacing in a way, or modifying what was virtual machines and the hypervisor layer:
“A hypervisor (or virtual machine monitor, VMM, virtualizer) is computer software, firmware or hardware that creates and runs virtual machines.
A computer on which a hypervisor runs one or more virtual machines is called a host machine, and each virtual machine is called a guest machine.
The hypervisor presents the guest operating systems with a virtual operating platform and manages the execution of the guest operating systems. ” -Wikipedia.
The hypervisor is what comunicantes with the actual kernel of the system.
Containers on the other hand are more efficient because they can communicate directly with the operating system and kernel without the use of a hypervisor.
Docker is the most popular “Containerization” platform, and with good reason.
It is without a doubt more efficient and easier to work with than virtual machines.
And if Docker is the integrator for all of your contained software architecture Kubernetes is the orchestrator of how your containers are going to work together.
And this is where most of your work will take place; orchestrating distributive development.
Containers can be brought in as you need them and placed in your applications life cycle.
Essentially Kubernetes allows you to maintain your containers.
“Kubernetes (commonly stylized as k8s) is an open-source container-orchestration system for automating computer application deployment, scaling, and management.” -Wikipedia
And next we Azure which is not required to use Kubernetes with Docker, however it provides a structure of nodes that is easy to understand and maintain.
This system includes a Master node, and one or several child nodes or pods. Also called a cluster.
Even a singular node can be called a cluster node.
And we won’t go into details here but as an overview a master node includes four components:
- Etcd: takes care of the status of the cluster
- KubeApi: Server
- Scheduler: orchestrations container interaction
- Kube Controller: Communicates between scheduler and KubeApi
The Cluster Node also has four components:
- MyContainers: Number of containers
- Container Runtime
- Kubelete: Command Shell (all kubectl commands) connects to the Master Node’s scheduler. And scheduler works with the Master Node’s Controller.
- Kube Proxy: Network.
So as you can see this is an amazing way to scale, but it gets complicated quickly so hopefully this helped a bit in deciding if you want to learn more about containers, Docker, Kubernets, Azure etc…
If you have experience using containers I’d love to hear about your experience working with them so leave me a comment below!
Thank you for reading! And until next time Don’t forget to follow for similar content.