1. Docker
Why Docker?
Content (App) Agnostic
Hardware Agnostic
Content Isolation & Interaction
Automation
Reusability
Deploying and scaling more quickly & easily
Docker Owns/Shares:
• Own Process Space (Isolated Process)
• Own network Interface
• Run programs as root
• Own “/sbin/init”
• Share Kernel with Host
• No Device Emulation
*What happens when you type “docker run –I –t ubuntu /bin/bash”*
What is Docker?
Docker is an open-source engine to easily create lightweight, portable,
self-sufficient containers from any application. The same container
that a developer builds and test on a laptop can run at scale, in
production, on VMs, OpenStack Cluster, public clouds & more.
Docker is created by team at dotCloud to make Linux Containers (LXC)
easier to use. LXC are lightweight VMs that runs Unix Processes with
guaranteed isolation across servers
VMs vs. Docker?
Docker’s Architecture
• Docker Daemon
Docker daemon runs on a host machine
• Docker Client
Primary user interface to Docker
Docker – An Inside Look
Docker Images (The BUILD Component) – Read-Only templates and each image
consists of series of layers. Docker Leverages Union File System to combine layers in
to a single Image
Docker Registries (The DISTRIBUTION Component) – Registry to store Docker
Images
Docker Container (The RUN component) - Consists of OS, user-added files &
meta-data. Container gets built from an image which provides information about
the process to run. In this component, docker adds a read-write layer on top of the
image (using UFS) in which application runs
Want to learn more: https://www.docker.com/tryit/
1. Pulls the ubuntu image
2. Creates a new container
3. Allocates a file-system and mounts a read-write layer
4. Allocates a network / bridge interface
5. Sets up an IP address
6. Executes a process that you specify
7. Captures and provides application output