What is Container
Introduction
A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.
How Do Containers Work?
Containers rely on a technology called containerization, which involves isolating an application and its dependencies from the underlying host system. Each container runs on top of a shared operating system kernel, but has its own isolated file system, network stack, and process space. This allows multiple containers to run on the same host system without interfering with each other.
Benefits of Containers
So why are containers so popular in modern software development? Here are just a few of the key benefits:
- Portability: Containers can be easily moved between different environments, from development to testing to production, without needing to worry about compatibility issues or dependencies.
- Scalability: Containers can be quickly and easily scaled up or down to meet changing demand, without needing to provision new hardware or virtual machines.
- Efficiency: Containers use fewer resources than traditional virtual machines, making them faster to deploy and run.
Recommended Reading
- Building a Container Using Buildah
- Building a Container Using Jib Without Docker
- Building a Container with Buildpacks
- Colima - container runtimes on MacOS
- Common usage of Snap on Ubuntu 20.04 and later
- Container Runtime Interface (CRI) CLI - crictl
- Container
- Creating and Managing Container Images
- DevPod
- Docker Cheat Sheet
- Manage Docker Containers Volume and Environment
- Management of Docker Containers Network
- Podman Cheat Sheet
- Podman pull official images from docker hub
- PouchContainer - An Efficient Container Engine
- Primary OCI runtimes used with container engines
- Skopeo
Comparing Containers and Virtual Machines
Containers and virtual machines have similar resource isolation and allocation benefits, but function differently because containers virtualize the operating system instead of hardware. Containers are more portable and efficient.
Container Runtimes
Containerd
containerd is available as a daemon for Linux and Windows. It manages the complete container lifecycle of its host system, from image transfer and storage to container execution and supervision to low-level storage to network attachments and beyond.
CRI-O
Open Container Initiative-based implementation of Kubernetes Container Runtime Interface.
LXC
LXC provides OS level virtualization through a virtual environment that has its own process and network space, it uses linux cgroups and namespaces to provide the isolation.
AWS Firecracker
https://aws.amazon.com/blogs/aws/firecracker-lightweight-virtualization-for-serverless-computing/