A Gentle Introduction


Who are these guys?

Dale Alleshouse

Senior Member of Technical Staff
Carnegie Mellon University's Software Engineering Institute
One year assignment at KREL, dev on Marauder

Twitter: @HumpbackFreak

Blog: [http://www.hideoushumpbackfreak.com]

Brett Cohen

Software Engineer with GHOST
B.S. in Computer Science, Worcester Polytechnic Institute '18

Website: brettcohendev.com


  • 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


  • 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


  • 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


  • 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

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


  • Made containers easy by providing a simplistic CLI
  • Image Distribution
  • Components
    • Docker Engine
    • Images
    • Registries

Docker Engine

  • Server (Daemon)
    • dockerd
    • Responsible for container operations
    • Sends commands to server
  • Client (CLI)
    • Issues commands to the REST API


  • Complete IMMUTABLE Union File System
  • Layered
    • Each layer is interchangeable
    • Containers can share layers
    • Writable top layer at runtime

Images & UnionFS


  • 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


Awesome Demo

git clone https://github.com/dalealleshouse/docker-training
cd docker-training/docker
docker-compose up -d
docker-compose scale java-consumer=5

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
  • Maybe I can Help
    • @HumpbackFreak

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.

  • 240
Loading comments...

More from Dale Alleshouse