Recently a friend asked me to quote, “I’m a python developer, why are they asking about docker familiarity in the job description?” In this article, l will explain Docker and Kubernetes while using a Fries store concept. I will also differentiate Docker and Kubernetes since they tend to confuse many.
Docker
Now imagine It’s a busy day specifically in our fries shop located just opposite the archives building. We have our cashiers taking orders, most customers prefer takeaway while others prefer eating in the eatery section. Let’s focus on those having take-aways. We need suitable disposable containers for them.
Customers are complaining that their clothes are soaked in grease from carrying the fries. They also complain that the disposable containers tears and pour out their fries because our cans are of poor quality. As a fries business shop, we need positive reviews for competitive advantage purposes. So what can we do? Let's use the same analogy to understand Docker.
Assuming the fries shop is a software organization, fries are the application to be delivered to a client and the disposable cans act as Docker containers. The goal is to deliver the application to our clients and ensure it's working perfectly from their end and doesn’t have issues. In other words (ensuring customer enjoys their fries order, without experiencing problems like the greasy cloth issue).
There are instances when a developer finishes their assigned task and the project seems to be running perfectly from their end but when presented to the client it doesn’t run on the client’s machine. This could be a result of compatibility issues and a lack of packages and dependencies in the client’s machine. This is where Docker Containers come in.
A developer can easily package their application using docker containers and transfer it to their clients’ computers. Docker containers, basically allow applications to be shuttled between environments allowing them to be portable in systems having Linux Operating System.
Docker provides a toolkit used to package the applications by writing a Docker file and then running commands to build the image using the Docker server. These container images can then be deployed and run on any platform supporting containers.
Although docker provides a way to package the containerized application, managing containers at a scale is a challenge. There is a need to monitor the health of our containers and deploy with zero downtime. To solve these problems, container orchestration emerged in form of Kubernetes and Docker Swarm. These allow developers to
- Manage large volumes of containers
- Balance loads efficiently
- Multi-platform deployment by the organization.
Kubernetes
Back to our fries store, it’s the festive season and business is booming. We are receiving more customers than expected and scaling has been an issue. Our priority is to track the remaining supply, monitor customer satisfaction with our services, and make more orders for the disposable containers. We decide to implement a system that will automatically give us an update on the stock available, configure alerts and monitor our services to our customers during the high turnout seasons.
Let’s try relating our story to Kubernetes, the aim of the system is to try to cut down on overhead costs and remove a lot of manual work without affecting underlying infrastructure. Kubernetes is a platform for
- Automating deployment
- Scaling
- Managing containerized applications. (Container orchestration)
Simply put, Docker allows you to ‘build’ containers and Kubernetes helps you ‘manage’ those containers. Feel free to use Docker to deploy and package applications and their dependencies and to use Kubernetes to deploy and scale the application.
Until next time, cheers, Elcy