docker for the brave

55
DOCKER FOR THE BRAVE INTRODUCTION FOR BUSY PEOPLE

Upload: david-schmitz

Post on 16-Apr-2017

348 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Docker for the Brave

DOCKER FOR THE BRAVEINTRODUCTION FOR BUSY PEOPLE

Page 2: Docker for the Brave

AGENDA

AGENDA

▸ The need for containers

▸ Overview: Docker and the Docker Ecosystem

▸ Basic Docker Workflows

Page 3: Docker for the Brave

“Well, it worked on my machine!”

Page 4: Docker for the Brave

THE NEED FOR CONTAINERS

TRADITIONAL SOFTWARE DELIVERY SUFFERS FROM GAP BETWEEN DEV AND PROD

STABILITY AND ROBUSTNESSFLEXIBILITY

Development Production

Page 5: Docker for the Brave

THE NEED FOR CONTAINERS

TRADITIONAL SOFTWARE DELIVERY SUFFERS FROM GAP BETWEEN DEV AND PROD

Loan Application

JDK 8

WILDFLY

MYSQL

MAC OSX

Production

JDK 6

WEBLOGIC

ORACLE

AIX

FIREWALL

SECURITY INFRASTRUCTURE

MONITORING

?

Page 6: Docker for the Brave

Magic Operations Guide Template

Page 7: Docker for the Brave
Page 8: Docker for the Brave

Unicorns do not exist!

Page 9: Docker for the Brave

THE NEED FOR CONTAINERS

CONTAINERIZED APPLICATIONS OFFER A WAY TO NARROW THE GAP

▸ Immutable containers reduce human errors

▸ Instead of “works on my machine” you deploy the machine

▸ Think diapers

Page 10: Docker for the Brave

THE NEED FOR CONTAINERS

PACKAGE ONCE DEPLOY ANYWHERE

CODE

RUNTIME SYSTEM TOOLS

LIBRARIES

Container

Page 11: Docker for the Brave

THE NEED FOR CONTAINERS

Loan Application

JDK 7

MYSQL CORE OS

WILDFLY

Container Production

Sales Application

JDK 8

NEO4J ALPINE

JETTY

Container

JDK 7

MYSQL CORE OS

WILDFLY

Container

JDK 8

NEO4J ALPINE

JETTY

Container

Page 12: Docker for the Brave

THE NEED FOR CONTAINERS

VIRTUALIZATION VS. CONTAINERS

SPEED FOOTPRINT SIMPLICITY

Page 13: Docker for the Brave

DOCKER BOOTCAMP

Page 14: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE DOCKER ECOSYSTEM CONSISTS OF FIVE ESSENTIAL PARTS

Docker

SwarmMachine

Compose Network

Page 15: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

WE’LL ONLY COVER THE BASICS

Docker

Machine

Compose

Swarm

Network

Page 16: Docker for the Brave

LINUX VM (BOOT2DOCKER.ISO)

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

DOCKER-MACHINE HELPS GETTING STARTED ON NON LINUX BOXES

DOCKER HOST

WILDFLY

MYSQL

REDIS

Page 17: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

DOCKER TOOLBOX TO THE RESCUE

▸ Offers a one stop Docker setup for non-Linux machines

▸ Easiest way to get started on Mac and Windows

▸ Includes everything covered in theses slides

https://www.docker.com/docker-toolbox

Page 18: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

DOCKER IN A NUTSHELL

REGISTRYDOCKER HOST

DOCKER CLIENT

CONTAINER

CONTAINER

CONTAINER

IMAGE

IMAGE

Page 19: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

IMAGES AND CONTAINERS

IMAGE ALPINE:3.1

CONTAINER: DREAMY_HUGLE B00F46831AF3

CONTAINER: SLEEPY_GOLICK F0A1172ADB12

CONTAINER: JOLLY_BABBAGE D0BAE89AD214

Page 20: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER LIFECYCLE

CREATED

STARTED

STOPPED

REMOVED

Page 21: Docker for the Brave

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

Page 22: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

EXPOSING SERVICES

Page 23: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST

Page 24: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST

?DOCKER HOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

80

443

Page 25: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS

Page 26: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS

DOCKER HOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

80

443

8080

Page 27: Docker for the Brave

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

▸ Running ngnix

▸ Exposing ports

Page 28: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

CREATED

STARTED

Page 29: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

CREATED

STARTED

Page 30: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

STARTED

STOPPED

Page 31: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM SURVIVES RESTARTS

CONTAINER: TEST F0A1172ADB12

foo

STARTED

STOPPED

Page 32: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM SURVIVES RESTARTS

CONTAINER: TEST F0A1172ADB12

foo

STARTED

Page 33: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

CREATED

STARTED

STOPPED

REMOVED

Page 34: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST F0A1172ADB12

foo

STOPPED

REMOVED

Page 35: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST D8C89E9BB6AB

CREATED

STARTED

Page 36: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST D8C89E9BB6AB

CREATED

STARTED

Page 37: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS SEPARATED FROM THE HOST ENVIRONMENTHOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

Page 38: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

PERSISTENT VOLUMES ARE USED TO SHARE DATA BETWEEN HOST AND CONTAINER

HOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

CONTAINER: SLEEPY_GOLICK F0A1172ADB12

VOLUME: DATA

Page 39: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

PERSISTENT VOLUMES ARE USED TO SHARE DATA BETWEEN HOST AND CONTAINER

HOST

CONTAINER: MYWEB B00F46831AF3

VOLUME: ~/SHARED

VOLUME: /USR/SHARE/NGINX/HTML/

foo.htmlfoo.html

Page 40: Docker for the Brave

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

▸ Running ngnix

▸ Exposing ports

▸ Sharing volumes and data

▸ Monitoring

Page 41: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE DOCKERFILE IS THE RECIPE FOR AN IMAGE

IMAGE KOENIGHOTZE/JDK8

Dockerfile

Page 42: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

READ WRITE LAYER

READ LAYER

READ LAYER

READ LAYER

Page 43: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

Page 44: Docker for the Brave

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

IMAGES ARE LAYERED; EACH LAYER IS CACHED OR FETCHED INDIVIDUALLY

KOENIGHOTZE/JDK8

FROM GLIDERLABS/ALPINE:3.3

CMD ["BASH", "-L"]

MAINTAINER DAVID SCHMITZ

VOLUME [$SRC_VOLUME]

Page 45: Docker for the Brave

COMPLEX SCENARIOS USING COMPOSE

Page 46: Docker for the Brave

COMPOSITION

COMPLEX SCENARIOS USING COMPOSE

MANAGING DEPENDENCIES WITH DOCKER-COMPOSE

CONTAINER: DREAMY_HUGLE B00F46831AF3

CONTAINER: SLEEPY_GOLICK F0A1172ADB12

CONTAINER: JOLLY_BABBAGE D0BAE89AD214

Page 47: Docker for the Brave

COMPLEX SCENARIOS USING COMPOSE

USING DOCKER-COMPOSE FOR DEPENDENCIES*

BOOKING

ping mongodb

MONGODB GUEST

curl $GUEST_URI

*Note: Compose V1 Syntax

Page 48: Docker for the Brave

MOVIE CONTAINER

COMPLEX SCENARIOS USING COMPOSE

DOCKER SINGLE HOST NETWORKING USING LINKS

MOVIE.WAR

ACTOR CONTAINER

ACTOR.WAR

Page 49: Docker for the Brave

DEMO TIME

CREATING A SIMPLE COMPOSITION WITH SPRING-BOOT AND DOCKER

▸ Create simple web application

▸ Add database as container

▸ Create compositions file

▸ Add volumes

Page 50: Docker for the Brave

BEYOND DOCKER

WHAT IS NEXT?

▸ CoreOs and rkt

▸ Docker Swarm and Kubernetes

▸ Unikernels (!)

Page 51: Docker for the Brave

BEYOND DOCKER AND SUMMARY

SUMMARY

▸ Docker is production ready

▸ Docker-Compose is targeted towards developers and should not be used for production

▸ Might have some issues with regards to networking and clustering

▸ Multi-Cloud deployments possible

▸ Community is vital and eager to help

Page 52: Docker for the Brave

WANT TO KNOW MORE?

TRY ONE OF THESE GREAT VAULTS OF WISDOM

▸ Docker Home Page: https://www.docker.com/

▸ Docker Cheat Sheet: https://github.com/wsargent/docker-cheat-sheet

▸ James Turnbull, Dockerbook: http//www.dockerbook.com/

Page 54: Docker for the Brave

BACKUP<>

Page 55: Docker for the Brave

THE NEED FOR CONTAINERS

Loan Application

JDK 7

MYSQL CORE OS

WILDFLY

Container

JDK 8

NEO4J ALPINE

JETTY

Container

RUBY

POSTGRES ALPINE

RAILS

Container

… …

Container