Containers & Servers
If you are thinking of a big ship filled with containers, you are going in the right direction. Now just add the computer part. That is what this post is about, containers have been around for some time and tie in with the first post of this series where we looked at Hypervisors or Virtual Machines. You guessed it, containers are part of cloud computing and even though they provide a similar result to hypervisors, they are totally different.
What are containers?
As mentioned, containers just like virtual machines are used to allow for multiple systems to run on a single server. Virtual machines split hardware resources (CPU, Ram) into smaller parts to allow separated virtual computers. Containers do not do that. Containers work on a single “Base” or hardware platform, not splitting up resources but still providing completely separated server environments.
Container software is available from various different companies, but essentially all of them perform similar tasks. Each with its own unique advantages and specifications. Some examples are:
- Microsoft Azure
- Container Linux by CoreOS
- AWS Fargate
- Google Kubernetes Engine
- Apache Mesos
Find more detailed information about each of these applications here.
How are Containers different from Virtual Machines?
Containers are much faster than virtual machines. The reason is the way they use the Kernel/hardware. Virtual machines share the kernel, each taking a smaller part of the whole. Where containers work from a single centralized kernel. This resulted in hyper speedy startups and installations.
Another reason containers run at such high speeds is the fact that containers make use of lightweight software installs. With VM’s each VM installs its own operating system. Containers use a single operating system, and each container only needs specific parts depending on what you install. So making container installations lightweight.
A big difference to keep in mind is that unlike VM’s where you can install a mixture of Linux and Windows systems. With containers, the systems must relate to the main operating system. In other words, if you install Ubuntu, all your containers must be Linux based.
More about Docker
In the upcoming posts, we will be dealing with Docker. Docker is a very flexible containerization software application and works just as good on Windows as on Linux or any other system.
2 Key Concepts of Docker
Two key parts of docker that have been around for ages is Control groups and Namespaces. Control groups allow for setting up hardware utilization limits, like CPU’s, RAM or networks. Where Namespaces are used to isolate processes from each other.
Orchestration / Automation
In the industry, containers are used to automate processes and allow for the use of orchestration applications like Kubernetes. In short, containers is what makes it possible for giant companies like Amazon, Facebook, Twitter etc. to maintain really big networks and manage the volumes of traffic they have to.
Containers make it possible to easily move applications around between different types of servers and environments. Because they contain everything in a neat separate container. If you ever developed an application on one server and tried to move it to a different host, you will understand the headaches that accompany that.
Microservices is a concept mostly used by developers but made possible with containers. In the traditional sense, you will have a single server run your PHP server and your Database Server and your WordPress site. Now with containers, these can be separated. Containers make it possible to have your Database totally separate and isolated from your PHP server and so on. This is a great concept as it makes maintaining the different parts of your application much easier and more flexible.
We will be dealing with containers and more specifically Docker a lot more in the upcoming posts. This is a short introduction to give you an overview of containers. In the posts to follow we start from the beginning and install docker and then create containers and work all the way through to orchestration. Read the next Post: Docker Engine – An Easy Guide To Install In 3 Steps
If you have any questions or like to add some comments below, feel free to go ahead and do that and we will see you in the next post.
Meet the Author
Renier is a Full Stack PHP Developer who helps businesses with digital transformation. Before starting Quickfood, Renier worked as a technician and a business owner in the hospitality industry and website developer. After a successful career helping various retail stores, leasing agents and more with their websites, Renier now dedicates his time to Cloud-Based Business Applications. Learn how Renier got his start as a Cloud Application Developer.