This document summarizes a containers BoF (Birds of a Feather) session with information on container technologies and orchestration. It provides details on container usage for development vs production environments. For development, it recommends Docker and docker-compose. For production, it recommends orchestration tools like Docker Swarm, Kubernetes, and Mesos to manage container scheduling and lifecycles at scale. Meeting rooms are provided for discussions around development vs production container uses.
2. In The Right Place?
Development
If you are a developer looking to
integrate containers into your
project(s) and lifecycle:
Michigan Room, Floor 2
Orchestration
If you are a sysadmin looking to host/
manage production-level container
applications:
Koessler Room, Floor 3
3. Containers
Uses a combination of Kernel “cgroups” and “namespaces” to create isolated
containers
Software to help define and manage containers
2000 - BSD Jails
2005 - Solaris Zones
2008 - LXC
2013 - LMCTFY (Google)
2013 - Docker (formerly dotCloud)
5. Why containers?
• Lightweight, executable piece of software that contains everything you need to
run it
• Code, system libraries and tools, environment, settings
• All software and processes are isolated from their surroundings
• Portable
• Typically used for single instance programs
6. Docker
• Build images that captures
applications requirements.
• Manually commit or use a
recipe file.
• Push an image to
DockerHub, a hosted
registry, or a private
Docker Registry.
• Share Images
• Use Docker Engine to
pull images down and
execute a container from
the image.
11. Development - docker
Startup out of California
Most active Github repo two years running.
Windows Containers exist. Docker and Microsoft are partners. Microsoft one of the
major contributors to their Github.
https://www.docker.com/
12. Development - docker
Docker fundamentally changes the way you think about development and code pushes
You don’t push code. You push your container.
Build. Ship. Run.
Think small. This is the mindset of microservices.
13. Development - docker
Docker fundamentally changes the way you think about development and code pushes
You don’t push code. You push your container.
Build. Ship. Run.
Think small. This is the mindset of microservices.
The smaller a component is, the faster its development is.
14. "I like putting apps into containers because
then I can pretend they're not my problem."
@sadoperator
15. Development - docker machine / environment
If on a Linux system: Congrats, docker installs natively*.
OSX / Windows? Use docker machine.
OSX development as seamless as Linux.
Windows has some subtle issues (Postgres problems)
Native windows containers? Separate install (windows only) that uses Hyper-V.
https://docs.docker.com/engine/installation/
16. Development - docker-compose
You have a container with your code. Great.
Now you want to connect multiple containers together to run your app (web + db)
Spin up an entire environment locally.
20. Orchestration
Container Orchestration Engines (COE’s) aim to solve at a minimum the following:
● Scheduling / Container lifecycle Management
● Highly Available
● Application Health Checking
● Service Discovery
● Persistent Storage
22. Orchestration - Swarm
Docker Native Orchestration Engine
Released in November of 2015
Extends Docker-Compose and uses the same YAML DSL
By far the easiest to use and manage
Least functionality of the big players
https://docs.docker.com/engine/swarm/
23. Orchestration - Kubernetes
Kubernetes (k8s) - Ancient Greek for Helmsman
Released in June of 2014 as a next evolution of Google Borg
Most widely used Container Orchestration System
Massive Developer Backing
Velocity makes it hard to stay on top of.
https://kubernetes.io/
24. Orchestration - Mesos
Initially released in 2009 as PhD project out of Berkley
Is NOT natively a container scheduler. It provides a uniform way for a host to expose
resources so that it may be consumed by a scheduler.
Has tight integrations with quite a few Apache projects. (Hadoop, Spark, etc)
Proven to scale to 10,000+ nodes without issue.
https://mesos.apache.org/