A Gentle Introduction
https://slides.com/d/ThafO7s/live
Goals
- Understand Container Technology at a High Level
- Understand the Appeal/Benefits of Containers
- Provide a Starting Point for Working with Docker
- Have Fun - Docker is cool
Agenda
-
What is a container?
-
How do containers work?
-
Why use containers? (Evolution of applications)
-
Docker
-
Awesome Demo
-
What Now?
What is a Container?
-
Multiple Definitions
-
OS Containers vs. Application Containers
-
Many Implementations
-
-
Container Technologies
-
FreeBSD Jail - 2000
-
Solaris - 2004
-
LXC - 2008
-
Docker - 2013
-
CoreOS rkt (pronounced rocket)
-
https://en.wikipedia.org/wiki/Operating-system-level_virtualization
-
Container Essentials
-
Kernel Virtualization
- Isolated, resource controlled, and portable operating environment
Analogies
- Lightweight VM?
- Kinda... Not Really...
- CLI Only
- chroot on Steroids
- Obligatory Shipping Analogy
- Container Runtime is a Shipping Barge
- Containers are Standardized Shipping Crates
- Group of processes with extended isolation capabilities
How do Containers Work?
- Linux Kernel
- You can create a container with standard shell commands
- Kernel Technologies
- Namespaces
- Control Groups (cgroups)
- Union File System
- Container Format
- Windows has similar concepts for Server 2016
Namespaces
- Process with entirely separate machine view
- Linux Namespaces
- mount - mount points
- UTS - Host name
- IPC - Inter Process Communication (message queues, etc...)
- Network - network devices, stacks, and ports
- User - user and group IDs
- PID - process IDs
Control Groups (cgroups)
- Regulates the resource usage for a collection of processes
- CPU
- memory
- disk I/O
- network
- devices
-
Features
- Resource limiting
- Prioritization
- Accounting
- Control
Union File System
- Separate file systems overlaid forming a single coherent file system
- Drivers
- UnionFS - 1990
- AUFS - 2006
- Btrfs
- devicemapper
- overlayfs/overlay2
- Many More
- Driver set on Docker Daemon
- Why?
- Performance
- Shared Storage
Union File System
Container Format
- Packages namespaces, cgroups, and UnionFS into a wrapper
- Typically aligns Namespace and cgroup boundaries
- Competing Container Formats
- LXC
- appc - CoreOS rkt
- libcontainer - Docker
- OCI (Open Container Initiative)
- Standards for container formats and runtimes
- None are in full compliance YET
Pop Quiz
What Happens if someone slaps you at a high frequency?
It Hertz...
Evolution of Applications
Why Use Containers?
Long Live Hypervisor!
- Hypervisor is not dead
- Container Runtime on top of Hypervisor
- Advantages
- Install any OS side-by-side
- Security Isolation between host and VM
- Hypervisor Containers
- VM on Container Runtimes
Docker
- Made containers easy by providing a simplistic CLI
- Image Distribution
- Components
- Docker Engine
- Images
- Registries
Docker Engine
- Server (Daemon)
- dockerd
- Responsible for container operations
- REST API
- Sends commands to server
- Client (CLI)
- Issues commands to the REST API
Images
- Complete IMMUTABLE Union File System
- Layered
- Each layer is interchangeable
- Containers can share layers
- Writable top layer at runtime
Images & UnionFS
Registries
- Repository for managing images
- Similar to NPM or Nuget except with images instead of packages
- Distribute images easily
- Major contributing factor to the success of docker
- Examples
- Docker Hub
- Quay
- Private
Docker for Windows/Mac
- Creates Linux Alpine machine in hypervisor
- Not intended for production scenarios
- Do not confuse with Docker ON windows
- MS implemented containers for Server 2016
- Linux and Windows containers don't run side by side
Docker on Windows
- https://www.youtube.com/watch?v=85nCF5S8Qok
(https://blog.docker.com/2016/09/dockerforws2016/)
Awesome Demo
git clone https://github.com/dalealleshouse/docker-training
cd docker-training/docker
docker-compose up -d
docker-compose up --scale java-consumer=5 -d
What Now?
- Install Docker
- https://www.docker.com/products/docker
- Learn Docker
- https://docs.docker.com/
- Nigel Poulton on Pluralsight
- The Docker Book: Containerization is the new virtualization by James Turnbull
Thank You!
Docker - A Gentle Introduction
By Dale Alleshouse
Docker - A Gentle Introduction
Does the term containerization seem a bit nebulous to you? Have you heard all the latest buzz but aren’t sure how to practically apply Docker? Are you curious about the inception of Docker? Have you ever wondered about the underlying technologies that make Docker work? If you answered yes to any of these questions, this is the track for you.
- 1,233