Connecting Containers

Building a PaaS with Docker and Kubernetes

Presented by
Katie Miller / @codemiller
Steve Pousty / @TheSteve0

Platform as a Service

OpenShift

Reasons to Rebuild

New infrastructure and learning

Virtualization and then Cloud

A lot of experience with Linux

RPM-OSTree

A system to compose RPMs on a server side into an OSTree repository

Minimal System

Best supported kernel in the world

All the System Utilities you need and nothing else

Containers 1st class citizens

Made for running containers

Includes a console for management

Wins

Defining Container

Diagram of a multi-layered docker container
  • In Docker parlance, a container is a running instance of an image
  • Based on linux containers (namepaces, control groups)
  • Combines file system layers into a "Union File System"
  • Includes all of the components necessary to run a process, store persistent data, or both

Containers vs. VMs

Docker and VM comparison diagram

Container Operations

Instantiate a Docker container with docker run:

$ docker run -i -t nhripps/centos /bin/bash
bash-4.1# exit
exit

 
List running and exited docker processes with docker ps:

$ docker ps -l
CONTAINER ID  IMAGE                  COMMAND      CREATED         STATUS      NAMES
7c4ef3596fa5  nhripps/centos:latest  "/bin/bash"  49 seconds ago  Exited (0)  grave_newton

 
Rejoin containers with docker attach:

$ docker start grave_newton
grave_newton
$ docker attach grave_newton
bash-4.1# exit
exit

"Diffing" a Container

Run a Docker image and perform some actions:

$ docker run -i -t --name="add_wget" nhripps/centos /bin/bash
bash-4.1# yum install -y wget
...
bash-4.1# exit

Run a diff on the container after it has run:

$ docker diff add_wget
C /.bash_history
C /etc
A /etc/wgetrc
C /tmp
C /usr
C /usr/bin
A /usr/bin/wget
C /usr/share
C /usr/share/doc
A /usr/share/doc/wget-1.12
...

Docker Containers as Daemons

Docker Containers Just Keep Going...

A docker container runs until:

  • The process inside it exits or
  • You stop it with docker stop <container_name>

Linking Containers

Docker links diagram
  • Containers on the same host can be linked together
  • Links between containers are not accessible outside the host
  • Links are shared via ENV and /etc/hosts

Docker: Pros and Cons

PROS:

  • Extreme application portability
  • Very easy to create and work with derivative images
  • Fast boot on containers
    

CONS:

  • Host-centric solution; not aware of anything else
  • No higher-level provisioning
  • No usage tracking / reporting

Wins

kubernetes:

koo-ber-nay'-tace  Greek for 'pilot' or 'helmsman'
"a system for managing containerized applications across multiple hosts"
declarative model
open source project by Google

Terminology and Architecture

Concepts

pod
colocated group of Docker containers that share an IP and storage volumes
service
provides a single, stable name for set of pods and acts as basic load balancer
replication controller
manages the lifecycle of pods and ensures specified number are running at any time
label
used to organize and select groups of objects

Components

cluster
compute resources on top of which containers are built
master
hosts cluster-level control services, including the API server, scheduler, and controller manager
node
Docker host running kubelet (node agent) and proxy services
etcd
distributed key-value store used to persist system state

Wins

Runtime and operational management of containers

Manage related Docker containers as a unit
Container communication across hosts
Availability and scalability through automated deployment and monitoring of pods and their replicas, across hosts

Building OpenShift v3

Wins

Demo

Conclusion

References and Resources

Image Credits

Connecting Containers

http://containers.codemiller.com

Presented by
Katie Miller / @codemiller
Steve Pousty / @TheSteve0

Runs on Kubernetes Presented by: @ryanj