IT 3300 : Virtualization

Containers

Overview

  • Containers?
    • Containers are an encapsulation of an application with its dependencies
    • A container is a sandboxed process running on a host machine that is isolated from all other processes running on that host machine.
  • Are they vms?
    • no
    • Vms try to emulate a foreign environment (at least compared to host OS)
    • Containers make applications portable and self-contained
  • Known as "operating system virtualization"

Container advantages

  • share resources with host OS
  • Can restart apps VERY quickly
  • Very portable! (contained in a single file)
  • Very lightweight... Can run a ton of containers compared to VMs on a host
  • Production fastness?
    • Can download a container (with all dependencies) and run, without having to spend time tweaking things.
  • Not platform dependent (not really)

Overview

History

  • chroot has been around for decades
  • LXC (Linux containers project) started in 2008
  • Docker took existing LXC and made it more user-friendly.

Misc

  • Instead of virtualizing the underlying hardware, containers virtualize the operating system (typically Linux or Windows) so each individual container contains only the application and its libraries and dependencies.
  • When developers create new applications, they might not know all of the places it will need to be deployed. Today, an organization might run the application on its private cloud, but tomorrow it might need to deploy it on a public cloud from a different provider. Containerizing applications provides teams the flexibility they need to handle the many software environments of modern IT.

Isolation

  • compare to vm isolation (each container thinks it has it's own os)
  • apps don't know about each other
  • isolation of process vs isolation of the machine (vm)