DAY 2: Docker vs Kubernetes

DAY 2: Docker vs Kubernetes

What is Docker?

Docker is an open-source platform based on Linux containers for developing, shipping, and running applications inside containers. Containers are very fast and lightweight because they don’t need the extra load of a hypervisor in comparison to the virtual machines because they run directly within the host machine’s kernel.

Docker is a popular containerization platform that enables developers to package applications and their dependencies into lightweight, portable containers. It provides a consistent runtime environment, ensuring that applications run seamlessly across different systems and environments. Docker simplifies the process of creating, distributing, and running containerized applications.

Docker Limitations :

a) Dynamic IP: The problem with docker is it uses a dynamic IP address. When we restart the container the IP address will change because IP is not static in Docker.

b) Ephemeral data storage: Docker containers are designed to be stateless, meaning that any data or changes made inside a container are typically lost when the container is stopped or deleted.

c) Confined to Single Host: In Docker, we can multiple containers on different hosts. Inside a single host, we can connect multiple containers to each other via a bridge network but we can’t connect two containers that are running on different hosts.

d) Security: Containers are lightweight, but you pay for this with security. Since containers in most cases use a common operating system, there is a general risk that several containers will be compromised at once if a host system is attacked.

e) No GUI: Docker was initially created as a solution for deploying server applications that don't require a graphical user interface (GUI).

Docker ContainersKubernetes
Docker is the tool to deploy containers.Kubernetes is a Container Orchestration tool.
Docker runs on a single node.Kubernetes is meant to run across a cluster
In Docker Communication between two different nodes is not possible.Using Kubernetes different nodes can communicate with each other.
Docker Swarm is used to managing containers which comes with the enterprise edition and not preferred by most companies.Kubernetes is an open-source platform also, this is widely used in industries.
Docker automatic scaling and failover for your application running on the container not possible.Kubernetes takes care of scaling and failover for your application running on the container.