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