DevOps (Containers & IaC) - robbiehume/CS-Notes GitHub Wiki
Docker
Overview
Docker is a tool that allows developers, sys-admins etc. to easily deploy their applications in a sandbox (called containers) to run on the host operating system i.e. Linux
The key benefit of Docker is that it allows users to package an application with all of its dependencies into a standardized unit for software development
Unlike virtual machines, containers do not have high overhead and hence enable more efficient usage of the underlying system and resources
Containers
VMs are great at providing full process isolation for applications: there are very few ways a problem in the host operating system can affect the software running in the guest operating system, and vice-versa
But this isolation comes at great cost — the computational overhead spent virtualizing hardware for a guest OS to use is substantial
Containers take a different approach: by leveraging the low-level mechanics of the host operating system, containers provide most of the isolation of virtual machines at a fraction of the computing power