High-level understanding about 'Containers'
Tags: containers, kubernetes, docker, beginners
Published: 2024-01-05 12:03:39

Containers are a lightweight and portable form of virtualisation that allows you to package and run applications and their dependencies in a consistent and isolated environment. Unlike traditional virtualisation, which involves running a full virtual machine (VM) with its own operating system, containers share the host operating system's kernel and isolate the application processes from each other.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i6lkgq8eahhs7npfp1jw.png)


Here are key concepts associated with containers:

### Containerisation Technology:

[Docker](https://docs.docker.com/guides/get-started/) is one of the most popular containerisation platforms, and it played a significant role in popularising container technology. Other containerisation technologies include [Containerd](https://containerd.io), [rkt](https://www.redhat.com/en/topics/containers/what-is-rkt#) (pronounced "rocket"), and [Podman](https://podman.io).

### Container Image:

A container image is a lightweight, standalone, and executable software package that includes the application code, runtime, libraries, and other settings required to run the application. Images are the building blocks used to create containers.

### Docker-file:

A Docker-file is a script that contains instructions for building a Docker image. It specifies the base image, application code, dependencies, and configurations needed to create a container.

### Container Registry:

Container registries, such as Docker Hub or Amazon ECR, store and manage container images. Developers can push and pull images to and from these registries to share and distribute containerised applications.

### Container Orchestration:

Container orchestration tools manage the deployment, scaling, and operation of containers in a clustered environment. Kubernetes is a widely used container orchestration platform, providing features for automatic scaling, load balancing, and service discovery.

### Isolation:

Containers provide process and file system isolation, allowing applications to run independently of each other. Each container has its own file system, network stack, and process space.

### Portability:

Containers are portable across different environments, from development to production. This portability ensures that an application behaves consistently regardless of the underlying infrastructure.
	

### Microservices Architecture:

Containers are often associated with micro-services architecture, where applications are broken down into smaller, loosely coupled services that can be developed, deployed, and scaled independently.

### Resource Efficiency:

Containers share the host OS kernel, resulting in lower overhead compared to traditional virtualisation. They start quickly and consume fewer resources, making them more efficient.

### DevOps and Continuous Integration/Continuous Deployment (CI/CD):

Containers are integral to DevOps practices, allowing developers to build, test, and deploy applications consistently across different environments. CI/CD pipelines often use containers for seamless integration and deployment.

Containers have become a fundamental technology for modern software development and deployment. They offer flexibility, scalability, and consistency, making it easier for developers and operations teams to manage and deploy applications across various environments.