As a software developer, you can use software containers to run stuff in a consistent manner across various operating systems. They are an operating system paradigm in which the kernel allows the existence of multiple, isolated user space instances. To create isolated process environments within a system, containers make use of bundle of techniques with main ones including:
- Unixβs namespace: process space and id’s
- chroot: filesystem visibility
- cgroups: allocated resources (networking, number of processes, memoryβ¦)
Ideally, containers can run (side-by-side) on any machine–all dependencies already included. Containerization attempts to tackle the “well, it worked on my machine” issue, where software runs seemingly fine on your machine but doesn’t run on another system.
Read More