Author : MD TAREQ HASSAN | Updated : 2023/07/19
- A container is a lightweight and portable software package that contains everything needed to run an application, including the code, runtime, system tools, libraries, and settings
- Containers decouple the application from the underlying infrastructure allowing us focusing on application development rather than underlying infrastructure.
- Containerization of application fits well into DevOps practice by simplifying CI/CD processes
Details: Container concepts
Why To Use Container?
- Simplifies and accelerates application development workflows
- Container allows applications to be shuttled easily between environments by encapsulating everything an application needs to run
- Gives developers the freedom to innovate with their choice of tools, application stacks, and deployment environments
- Reduces complexity (multiple languages, frameworks, architectures etc.) of software development lifecycle
- Containers much smaller, faster, and more efficient than Virtual Machines
- Takes away repetitive tasks and makes application development lifecycle fast, easy and portable
- Build once, share and run anywhere, any counts of instances
- Solves “… but it works in my machine” problem
- Containers provide several benefits, including: Portability, Scalability, Isolation Efficiency
- Kubernetes is an open-source container orchestration platform
- Kubernetes provides a framework for automating the deployment, scaling, and management of containerized applications
- Kubernetes abstracts away complex container management tasks
- Kubernetes also called K8s
Why To Use Kubernetes?
- Scalability: Kubernetes allows easy scaling of applications to handle varying levels of demand.
- High availability: Kubernetes ensures application availability by automatically recovering from failures and distributing traffic effectively.
- Container orchestration: Kubernetes simplifies the management of containerized applications, automating deployment and updates.
- Resource efficiency: Kubernetes optimizes resource utilization, preventing resource wastage and maximizing cost-effectiveness.
- Portability: Kubernetes provides a consistent platform for deploying applications across different environments, avoiding vendor lock-in.
- Self-healing: Kubernetes monitors application health and takes corrective actions, ensuring high availability without manual intervention.
- Ecosystem support: Kubernetes has a vibrant community, offering a wide range of tools and resources for enhancing deployments.
- Declarative configuration: Kubernetes uses a declarative approach, enabling easy definition and management of the desired application state.