Oscon London 2016 - Docker from Development to Production

79
Patrick Chanezon @chanezon, Docker Inc. Docker from development to production London, October 2016

Transcript of Oscon London 2016 - Docker from Development to Production

Page 1: Oscon London 2016 - Docker from Development to Production

Patrick Chanezon

@chanezon, Docker Inc.

Docker from development to production

London, October 2016

Page 2: Oscon London 2016 - Docker from Development to Production

French

Polyglot

Platforms

Software Plumber

San Francisco

Developer Relations

@chanezon

Page 3: Oscon London 2016 - Docker from Development to Production

1995 2015

Page 4: Oscon London 2016 - Docker from Development to Production
Page 5: Oscon London 2016 - Docker from Development to Production

PublicHybridPrivate

Ops Devops Developers

Page 6: Oscon London 2016 - Docker from Development to Production

Linux Container Ecosystem

flockerglusterfs

weavecalicomidokuracisconuage

Cloud

OS

Plugins

Orchestration

Page 7: Oscon London 2016 - Docker from Development to Production

Agility

Page 8: Oscon London 2016 - Docker from Development to Production
Page 9: Oscon London 2016 - Docker from Development to Production
Page 10: Oscon London 2016 - Docker from Development to Production

Agile methodologies (circa 1999)

Page 11: Oscon London 2016 - Docker from Development to Production
Page 12: Oscon London 2016 - Docker from Development to Production

Low MTBIAMSH

MTBIAMSH (Mean Time Between Idea And Making Stuff Happen)

Page 13: Oscon London 2016 - Docker from Development to Production

Agility == $$

Page 14: Oscon London 2016 - Docker from Development to Production

Devops

Page 15: Oscon London 2016 - Docker from Development to Production

25

Mainframe

Page 16: Oscon London 2016 - Docker from Development to Production

Client-Server

26

Page 17: Oscon London 2016 - Docker from Development to Production

27

Web

Page 18: Oscon London 2016 - Docker from Development to Production

28

Cloud - Devops

Page 19: Oscon London 2016 - Docker from Development to Production

Devops

• Cultural movement

• Inspired by agile methods

• People, Processes & Tools

• Continuous delivery

• Infrastructure as code

• Cross silo collaboration

• Small iterations

• Feedback loop, measurement

Image from Patrick Debois

http://www.slideshare.net/jedi4ever/devops-the-war-is-over-if-you-want-it

http://www.slideshare.net/jedi4ever/devopsdays-downundervfinal

Page 20: Oscon London 2016 - Docker from Development to Production

Devops: singing Kumbaya?

Page 21: Oscon London 2016 - Docker from Development to Production

28

http://highscalability.com/blog/2013/11/19/we-finally-cracked-the-10k-problem-this-time-for-managing-se.html

Server/Sysadmin

1999: 5(Windows) - 50 (Linux)

2015: 10k-20k

x2000

Page 22: Oscon London 2016 - Docker from Development to Production

28

https://blog.docker.com/2014/12/dockercon-europe-keynote-continuous-delivery-in-the-enterprise-by-henk-kolk-ing/

Henk Kolk, ING, DockerCon EU 2014

People, Processes, Products

deployment time: 9 months -> 15 min1500 deployments/week

Page 23: Oscon London 2016 - Docker from Development to Production

Docker Platform

Page 24: Oscon London 2016 - Docker from Development to Production

The world needs

tools of mass innovation

Page 25: Oscon London 2016 - Docker from Development to Production

A programmable Internet would be the ultimate

tool of mass innovation

Page 26: Oscon London 2016 - Docker from Development to Production

A commercial product,

built on

a development platform,

built on

infrastructure,

built on

standards.

Docker is building a stack to program the Internet

Page 27: Oscon London 2016 - Docker from Development to Production

Isolation using Linux kernel features

namespaces

pid

mnt

net

uts

ipc

user

cgroups

memory

cpu

blkio

devices

Page 28: Oscon London 2016 - Docker from Development to Production

Image layers

Page 29: Oscon London 2016 - Docker from Development to Production

What’s New?

Page 30: Oscon London 2016 - Docker from Development to Production

1.

Developer experience

Page 31: Oscon London 2016 - Docker from Development to Production

1. Get out of the way

The best tools…

2. Adapt to you

3. Make the

powerful simple

Page 32: Oscon London 2016 - Docker from Development to Production

Docker for Mac Docker for Windows

Page 33: Oscon London 2016 - Docker from Development to Production

2.

Orchestration

Page 34: Oscon London 2016 - Docker from Development to Production

Introducing the best way to orchestrate Docker: Docker.

Docker 1.12: now with orchestration built-in.

Page 35: Oscon London 2016 - Docker from Development to Production

Swarm mode

Service API

Cryptographic node identity

Built-in routing mesh

Docker 1.12: now with orchestration built-in.

Page 36: Oscon London 2016 - Docker from Development to Production

Using the beta? You already have 1.12 installed.

> docker swarm init

> docker service create

Page 37: Oscon London 2016 - Docker from Development to Production

3.

Ops experience

Page 38: Oscon London 2016 - Docker from Development to Production

Deep integration with native load-balancers, templates,

SSH keys, ACLs, scaling groups, firewall rules…

beta.docker.com

Page 39: Oscon London 2016 - Docker from Development to Production

Distributed Application Bundle

www.docker.com/dab

A portable format for multi-container applications

Page 40: Oscon London 2016 - Docker from Development to Production

Docker CaaS

Page 41: Oscon London 2016 - Docker from Development to Production

Goals

+ +

Agility Portability Control

Page 42: Oscon London 2016 - Docker from Development to Production

Cloud Zone 1

Cloud Zone 2 Data Center

Development

Center

Headquarters

Containerization: standard containers

on a standardized container engine

Orchestration: build and deploy

complex systems easily

Enterprise: Enable delivery and time

to value across a large, complex,

rapidly evolving enterprise

The Global Enterprise Supply Chain

Page 43: Oscon London 2016 - Docker from Development to Production

BUILDDevelopment Environments

SHIPRegistry: Secure Content &

Collaboration

RUNControl Plane: Deploy,

Orchestrate, Manage, Scale

Networking Volumes MonitoringLoggingConfig MgtCI/CD

IT Operations

Developers IT Operations

Docker CaaS Workflow

Page 44: Oscon London 2016 - Docker from Development to Production

Docker Containers as a Service platform

44

BUILDDeveloper Workflows

SHIPRegistry Services

RUNManagement

Docker for Mac and Windows Docker Trusted Registry Docker Universal Control Plane

Docker Cloud

Docker Container Engine

Ecosystem Plugins and Integrations

Page 45: Oscon London 2016 - Docker from Development to Production

UCP Permission Model

Page 46: Oscon London 2016 - Docker from Development to Production

Docker UCP 1.1 - DTR 2.0• HA

• Unified Auth

• Compose deployment

• UI to add nodes

Page 47: Oscon London 2016 - Docker from Development to Production

Security scanning in Docker Cloud

Page 48: Oscon London 2016 - Docker from Development to Production

Plumbing

Page 49: Oscon London 2016 - Docker from Development to Production

20

13

-0

5

20

13

-0

6

20

13

-0

7

20

13

-0

8

20

13

-0

9

20

13

-1

0

20

13

-1

1

20

13

-1

2

20

14

-0

1

1,000,000

0

20

14

-0

2

20

14

-0

3

20

14

-0

4

20

14

-0

5

20

14

-0

6

20

14

-0

7

20

14

-0

8

20

14

-0

9

20

14

-1

0

20

14

-1

1

20

14

-1

2

20

15

-0

1

20

15

-0

2

20

15

-0

3

20

15

-0

4

20

15

-0

5

20

15

-0

6

20

15

-0

7

20

15

-0

8

20

15

-0

9

20

15

-1

0

20

15

-1

1

20

15

-1

2

20

16

-

01

1,000,000,000

~

10,000,000

9,000,000

8,000,000

7,000,000

6,000,000

5,000,000

4,000,000

3,000,000

2,000,000

6,000,000,000

5,750,000,000

5,500,000,000

5,250,000,000

5,000,000,000

4,750,000,000

4.500,000,000

4,250,000,000

4,000,000,000

3,750,000,000

3,500,000,000

3,250,000,000

3,000,000,000

2,750,000,000

2,500,000,000

2,250,000,000

2,000,000,000

1,750,000,000

1,500,000,000

1,250,000,000

Page 50: Oscon London 2016 - Docker from Development to Production

20

13

-0

5

20

13

-0

6

20

13

-0

7

20

13

-0

8

20

13

-0

9

20

13

-1

0

20

13

-1

1

20

13

-1

2

20

14

-0

1

1,000,000

0

20

14

-0

2

20

14

-0

3

20

14

-0

4

20

14

-0

5

20

14

-0

6

20

14

-0

7

20

14

-0

8

20

14

-0

9

20

14

-1

0

20

14

-1

1

20

14

-1

2

20

15

-0

1

20

15

-0

2

20

15

-0

3

20

15

-0

4

20

15

-0

5

20

15

-0

6

20

15

-0

7

20

15

-0

8

20

15

-0

9

20

15

-1

0

20

15

-1

1

20

15

-1

2

20

16

-

01

~

20

16

-0

9

1,000,000,000

~

10,000,000

9,000,000

8,000,000

7,000,000

6,000,000

5,000,000

4,000,000

3,000,000

2,000,000

6,000,000,000

5,750,000,000

5,500,000,000

5,250,000,000

5,000,000,000

4,750,000,000

4.500,000,000

4,250,000,000

4,000,000,000

3,750,000,000

3,500,000,000

3,250,000,000

3,000,000,000

2,750,000,000

2,500,000,000

2,250,000,000

2,000,000,000

1,750,000,000

1,500,000,000

1,250,000,000

Notary

runC •

containerd •

HyperKit , VPNKit, DataKit •

SwarmKit •

libcontainer •

libnetwork • • Docker 1.8 : Docker Content Trust

• Docker for Mac

Docker for Windows

• Docker 1.12

with built-in

orchestration

• Docker 0.9 : Pluggable execution

• Docker 1.7 : Multi-Host Networking

• Docker 1.11:

OCI support

Page 51: Oscon London 2016 - Docker from Development to Production

Notary

“Let’s stop using curl|sh”

Trusted collections for any content

Transport-agnostic

Reliable updates, proof of origin, resistant to untrusted

transport, survivable key compromise

Build on industry-leading standards and research

Page 52: Oscon London 2016 - Docker from Development to Production

RunCThe universal container runtime

https://runc.io

Page 53: Oscon London 2016 - Docker from Development to Production

containerdA daemon to control runC

built for performance and density

http://containerd.tools/

Page 54: Oscon London 2016 - Docker from Development to Production

containerd

Page 55: Oscon London 2016 - Docker from Development to Production

Docker 1.11

Page 56: Oscon London 2016 - Docker from Development to Production

Docker for Mac architecture

(simplified)

Page 57: Oscon London 2016 - Docker from Development to Production

Hypervisor Framework

vmnet Framework

Docker Container Engine

Hypervisor

Linux

VPN

Data Service

Interface

Client Libraries

Admin GUI

CLI

Security Sandbox

Docker for Mac internals

Page 58: Oscon London 2016 - Docker from Development to Production

Unikernels

http://unikernel.org/

Page 59: Oscon London 2016 - Docker from Development to Production

Hypervisor Framework

vmnet Framework

Docker Container Engine

Hyperkit

Linux

VPNKit

DataKit

Client Libraries

Admin GUI

CLI

Security Sandbox

Improving Docker with unikernel tech

Page 60: Oscon London 2016 - Docker from Development to Production

InfraKit

Page 61: Oscon London 2016 - Docker from Development to Production

Problem:

Managing Docker on different infrastructure isdifficult and not portable.

Page 62: Oscon London 2016 - Docker from Development to Production

Consistent User Experience

62

How do we handle updates to a cluster??

Page 63: Oscon London 2016 - Docker from Development to Production

Docker for AWS

EBS ELB

Container Engine

Storage plugin

Infrastructure Management

Network plugin Orchestration

IAM

CloudFormation

EC2VPC

Admin interface

Linux

User Applications / Services

Page 64: Oscon London 2016 - Docker from Development to Production

Docker for AWS

EBS ELB

Container Engine

Storage plugin

InfraKit

Network plugin Orchestration

IAM

CloudFormation

EC2VPC

Admin interface

Linux

User Applications / Services

Page 65: Oscon London 2016 - Docker from Development to Production

InfraKit

A toolkit for building declarative, self-healing infrastructure.

Page 66: Oscon London 2016 - Docker from Development to Production

Declarative

• JSON configuration for desired infrastructure state:

• Specification of instances — vm image, instance type, etc.

• Group properties — size, logical identifiers, etc.

• Design patterns encourage

• encapsulation

• composition

• Config is input to all operations — system figures out what to do66

Page 67: Oscon London 2016 - Docker from Development to Production

Self-healing

• Composed of a set of active components / processes that

• monitor infrastructure state

• detect state divergence

• take actions

• Continuous monitoring and reconciliation — always on

• No downtime — rolling update

67

Page 68: Oscon London 2016 - Docker from Development to Production

Toolkit

• Primitives for managing collections of resources

• create, scale, destroy

• rolling update

• Abstractions & Developer SPI

• Group - manages collection of resources

• Instance - describes the physical resource

• Flavor - extra semantics for handling instances

• A collection of executable, active components — plugins

• Initially, Go daemons in the toolkit

• Soon, easy management via Docker Plugins (runc)

Page 69: Oscon London 2016 - Docker from Development to Production

Architecture

Page 70: Oscon London 2016 - Docker from Development to Production

Instance Plugin

• Spec: specification / model of an instance (e.g. vagrant, EC2):

• Logical ID, Init, Tags, and attachment

• Platform-specific properties

• Methods:

• /Instance.Validate

• /Instance.Provision

• /Instance.Destroy

• /Instance.DescribeInstances

• Examples: instance plugins for EC2, Azure VM, Vagrant, … 70

Page 71: Oscon London 2016 - Docker from Development to Production

Flavor Plugin

• Gives more context about the group members:

• Size, or list of Logical ID’s (e.g. IP addresses for ‘pets’)

• Application-specific notions of ‘health’

Is the node not only present but also joined a swarm?

• Methods:

• /Flavor.Validate

• /Flavor.Prepare

• /Flavor.Healthy

• Examples: flavor for Zookeeper members, Docker swarm nodes71

Page 72: Oscon London 2016 - Docker from Development to Production

Group Plugin

• Main entry point for user interaction:

• Create, describe update, update, destroy

• Config JSON is always the input

• Composed of Instance and Flavor — mix and match to

manage cattle (fungible) or pets (special)

• Methods:

• /Group.Watch

• /Group.Unwatch

• /Group.Inspect72

• /Group.DescribeUpdate

• /Group.Update

• /Group.StopUpdate

• /Group.Destroy

Page 73: Oscon London 2016 - Docker from Development to Production

Configuration

Example config file (zk.conf): Group configuration = Instance + Flavor

{"Properties": {

/* raw configuration */

}}

{"groups" : {

"my_zookeeper_nodes" : {"Properties" : {

"Instance" : {"Plugin": "instance-vagrant","Properties": {

"Box": "bento/ubuntu-16.04"}

},"Flavor" : {

"Plugin": "flavor-zookeeper","Properties": {

"type": "member","IPs": ["192.168.1.200", "192.168.1.201", "192.168.1.202"]

}}

}}

}}

Page 74: Oscon London 2016 - Docker from Development to Production

Operations

• Make sure the plugins are running:• infrakit/group &; infrakit/zookeeper &; infrakit/vagrant &;

• “Watch” the group starts management:• infrakit/cli group watch zk.conf

• Update the config, e.g. change size or add IP address• Describe changes before committing —

infrakit/cli group describe zk.conf

• Begin update —

infrakit/cli group update zk.conf74

Page 75: Oscon London 2016 - Docker from Development to Production

Today

75

• InfraKit is just getting started… only

primitives for working with groups like

clusters of hosts

• But we have big plans

• Improve group management strategies

• More resource types — networking, load

balancers, storage…

• A cohesive framework for active

management of infrastructure — physical,

virtual, or containers

Page 76: Oscon London 2016 - Docker from Development to Production

Get Involved

• Help define and implement new and interesting plugins

• Instance plugins for different infrastructure providers

• Flavor plugins for systems like etcd or mysql clusters

• Group controller plugins — metrics-driven auto scaling

and more

• Help define interfaces and implement new infrastructure

resource types — load balancers, networks and storage

volume provisioners76

Page 77: Oscon London 2016 - Docker from Development to Production

More Info

• Github:

https://github.com/docker/infrakit

• A quick tutorial:

https://github.com/docker/infrakit/blob/master/docs/tutorial.m

d

77

Page 78: Oscon London 2016 - Docker from Development to Production

Demo

Page 79: Oscon London 2016 - Docker from Development to Production

THANK YOU