Server
Host OS
Hypervisor
Server
Host OS
Docker Engine
Guest
OS
Guest
OS
Guest
OS
Bins/Libs Bins/Libs Bins/Libs
App A App A’ App B
Bins/Libs Bins/Libs
AppA
AppA’
AppB
AppB’
AppB
AppB’
AppB
AppB’
Containers are isolated,
but share OS and, where
appropriate,
bins/libraries
Bins/Libs
Containers = Operating system virtualization
ContainerContainerContainer
Traditional virtual machines = hardware virtualization
VM VM VM
Windows Server containers
No different from Linux containers
Container Container Container
Hyper-V containers
Isolation plus performance
Container Container Container
Repeatable execution
immutable environment
reusable and portable code (“Build, Ship, and Run”)
Consistency across development, test, & production
Fast & agile app deployment; instant startup
Cloud portability
Density, partitioning, scale
Diverse developer framework support
Microservices
Why containers?
Container tied to dependencies
Base image
Added files, binaries, libraries
App platforms. Eg – MongoDB, apache, node.js, etc.
Configuration changes
Networking
Custom code
Entry Point
Can think of these as “layers”
One can build new layers on top of an existing container
Docker will pull these required dependencies to install/run
Constructing a Container