What Does Software Container Mean?
A container is an executable software module that is bundled with all its dependencies. Containers are commonly used to provide system portability for IT services and distributed workloads in multi-cloud environments.
Containerization was initially developed as an cloud-friendly alternative to traditional hypervisor-based virtualization and virtual machines (VMs). Containers are often referred to as being lightweight because they share the host's operating system kernel and unlike virtual machines, do not require a full operating system (OS).
Containers can exist separately and independently from an existing host infrastructure because they have everything needed to run an application -- including code, runtimes, system tools, system libraries and configuration settings.
The initial module, which includes the dependencies an application needs in order to run, is referred to as the container image. Images are read-only files that can be used (and re-used) as needed.
Techopedia Explains Software Container
Containers function like isolated, secure building blocks that can be used (and re-used) in a modular fashion. Because container images hold everything needed for an application, developers do not need to make changes to code for new computing environments. The use of containers is rapidly growing, as are the number of tools available for container creation, execution and management.
Advantages of Software Containers
- Containers allow programmers to develop and deploy applications quickly and use compute resources efficiently.
- Containers are modular -- they can be created once and used multiple times without additional attention.
- Each container runs as a secure, isolated process in user space.
- Containers run on a virtualized layer that can be executed from many different hardware resources without requiring significant modifications.
- Containers can be spun up almost instantly and take up less space than VMs.
- Multiple containers can run on the same machine and share the OS kernel with other containers.
- Containers free developers from having to manage multiple configuration environments, support libraries and configurations throughout the software development lifecycle.
- Containers can be integrated with revision control systems like Git and container registries like Docker Hub. Once a developer has uploaded a container image to a registry, it can be imported from a number of different platforms.
- Containers support continuous integration and continuous delivery (CI/CD) workflows.
- Each container can be run as a single process microservice.
Container management systems allow developers to group multiple containers together, schedule and automate deployments, and scale applications quickly to meet changing business needs and priorities.
Popular container orchestration tools include:
Docker - an open platform for managing container lifecycles.
Kubernetes (k8s) - an open-source container orchestration system. Kubernetes containers that share storage and a local network are known as Pods.
Elastic Container Service (AWS ECS) - a proprietary, fully-managed container orchestration service from Amazon.
Azure Kubernetes Service (AKS) - Microsoft's open-source, fully managed container orchestration service based on Kubernetes.