Ruby Usergroup Hamburg · May 11th, 2016
Thilo-Alexander Ginkel · TG Byte Software GmbH
Thilo-Alexander Ginkel
Freelance Software Engineer and Consultant
<3 Ruby
Full-stack software engineer, but I especially like
Backend development
DevOps including Docker, Ansible, Puppet
Container-based virtualization
Hardware-based virtualization
OS-agnostic, i.e., most OSes are supported as guest
VM typically hosts a full-blown operating system
Technically, a mash-up of existing tech + a few novel parts
Containers share the host’s Linux kernel, i.e., no hypervisor
Mashup of existing technologies
Linux Kernel namespaces (isolation)
cgroups ("control groups"; resource isolation)
chroot (file system isolation)
UnionFS (file system overlay)
networking (iptables, bridge networks)
Plus a novel application packaging format (standardized by OCI)
"Build once, run anywhere"
Containers…
…consist of just what’s needed to run a given service
…are short-lived
…should be state-less
Immutable infrastructure / "cow vs. cattle"
Image
Immutable layered set of file system changes on top of a base image
Container
A running instance of an image
Note: There can be many instances of the same image
Image credits: Docker, Inc. https://docs.docker.com/engine/understanding-docker/
"Build once, run anywhere"
Exactly what is tested is later deployed to production
Self-contained deployment units avoid "dependency hell"
Stateless containers are easy to scale and upgrade
Rolling "zero downtime" deployments
Thank you!
Docker Consulting & Training
"Pissed off" by Niklas Hellerstedt - CC BY 2.0
"Containerschiff Hyundai Ambition verlässt Hamburg im November 2013" by Buonasera - CC BY-SA 3.0
"Section of the Perth - Kalgoorlie water supply pipeline near Merredin, WA. 1976" by CSIRO - CC BY 3.0
"A backlit laptop computer keyboard" - © User:Colin / Wikimedia Commons / CC-BY-SA-4.0