22
Colin Surprenant @colinsurprenant github.com/colinsurprenant/devopsmtl-docker DevOps Montréal Jan 6, 2014

Docker Introduction - DevOps Montreal Meetup

Embed Size (px)

DESCRIPTION

Introduction to Docker, the open source Linux containers engine. Presentation for the Montreal DevOps meetup on Jan 6, 2014. Material, code, examples available at https://github.com/colinsurprenant/devopsmtl-docker

Citation preview

Page 1: Docker Introduction - DevOps Montreal Meetup

Colin [email protected]/colinsurprenant/devopsmtl-docker

DevOps MontréalJan 6, 2014

Page 2: Docker Introduction - DevOps Montreal Meetup

What is Docker?

Open source engine that leverage LXC and AUFS to package an application and its dependencies in a virtual container that can run on any Linux server.

Page 3: Docker Introduction - DevOps Montreal Meetup

That was easy!

Thank you!Good evening!

LXC ?!

Page 4: Docker Introduction - DevOps Montreal Meetup

What is LXC?

● LinuX Containers● Available since kernel 2.6.27● Not a new concept

○ Linux VServer (BTW created by Jacques Gélinas, a Montrealer, in early 2000)

○ OpenVZ○ FreeBSD Jails○ Solaris Zones

Page 5: Docker Introduction - DevOps Montreal Meetup

LXC

● Lightweight VM○ own process space○ own network interface○ SHARE kernel with host

● Run Linux within Linux● A container is a group of isolated processes

○ cgroups○ namespace

● “chroot on steroid”

Page 6: Docker Introduction - DevOps Montreal Meetup

LXC vs VM

Page 7: Docker Introduction - DevOps Montreal Meetup

LXC Performance?

Low overhead

● Isolated processes run straight on the host● Native CPU performance● Minimal memory overhead● Minimal network performance overhead

Page 8: Docker Introduction - DevOps Montreal Meetup

do

So then, what is Docker?

Page 9: Docker Introduction - DevOps Montreal Meetup

Docker

● Wrapper over LXC● Tools to easily build images● Images sharing

○ public repository: index.docker.io○ private repository

● Docker daemon○ manage containers & images○ HTTP API○ CLI tools

Page 10: Docker Introduction - DevOps Montreal Meetup

Containers, images & AUFS

1. RO images dependson parent images

2. Add AUFS RW layer

3. All layers + meta isa container

Page 11: Docker Introduction - DevOps Montreal Meetup

Why Docker?

● Containment and reproducibility● Encapsulate app with its dependencies● Run everywhere(™)

● Another step toward Immutable Infrastructure

Page 12: Docker Introduction - DevOps Montreal Meetup

Why Docker?

● No more missing dependencies in deployments

● Run side-by-side containers with own versions of dependencies

Page 13: Docker Introduction - DevOps Montreal Meetup

Separation of Concerns

DeveloperInside the container

● my code● my libraries● my package manager● my app● my data

DevOpsOutside the container

● logging● remote access● network configuration● monitoring

Page 14: Docker Introduction - DevOps Montreal Meetup

Architecture

Host

serv

ice

Aco

ntai

ner

App

cont

aine

r

serv

ice

Bco

ntai

ner

Doc

ker

Host

serv

ice

Aco

ntai

ner

Doc

ker

Host

serv

ice

Bco

ntai

ner

Doc

ker

Host

App

cont

aine

r

Doc

ker

Page 15: Docker Introduction - DevOps Montreal Meetup

Some Consequences

● Services discovery & interconnection logic ● “Dockerized” services management/lifecycle● Services data persistence and logging

● Path to The Twelve-Factors App

Page 16: Docker Introduction - DevOps Montreal Meetup

Requirements

● Linux kernel >= 3.8● AUFS● LXC● 64 bits

● Recommended○ Ubuntu 12.04 with upgraded kernel○ Ubuntu 13.04

Page 17: Docker Introduction - DevOps Montreal Meetup

Bro, I’m developing on a MacBook

WTF MacBook

what about Windows?

shut up!

Page 18: Docker Introduction - DevOps Montreal Meetup

OSX?

● Virtualbox + Vagrant● github.com/steeve/boot2docker● Docker OSX native client (>= 0.7.3)

Page 19: Docker Introduction - DevOps Montreal Meetup

Typical Workflow

Page 20: Docker Introduction - DevOps Montreal Meetup

Demo github.com/colinsurprenant/devopsmtl-docker

Page 21: Docker Introduction - DevOps Montreal Meetup

Further Topics

● Deployment, orchestration, discovery○ Container linking○ Ambassador Container

■ docs.docker.io/en/latest/use/ambassador_pattern_linking/○ CoreOS○ Shipyard

● PAAS○ Dokku, Deis, Cocaine, Flynn

● Security

Page 22: Docker Introduction - DevOps Montreal Meetup

The end

Thank You!

Questions?

Zzzzzzzz