docker for the brave

Post on 16-Apr-2017

348 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DOCKER FOR THE BRAVEINTRODUCTION FOR BUSY PEOPLE

AGENDA

AGENDA

▸ The need for containers

▸ Overview: Docker and the Docker Ecosystem

▸ Basic Docker Workflows

“Well, it worked on my machine!”

THE NEED FOR CONTAINERS

TRADITIONAL SOFTWARE DELIVERY SUFFERS FROM GAP BETWEEN DEV AND PROD

STABILITY AND ROBUSTNESSFLEXIBILITY

Development Production

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

?

Magic Operations Guide Template

Unicorns do not exist!

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

THE NEED FOR CONTAINERS

PACKAGE ONCE DEPLOY ANYWHERE

CODE

RUNTIME SYSTEM TOOLS

LIBRARIES

Container

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

THE NEED FOR CONTAINERS

VIRTUALIZATION VS. CONTAINERS

SPEED FOOTPRINT SIMPLICITY

DOCKER BOOTCAMP

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE DOCKER ECOSYSTEM CONSISTS OF FIVE ESSENTIAL PARTS

Docker

SwarmMachine

Compose Network

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

WE’LL ONLY COVER THE BASICS

Docker

Machine

Compose

Swarm

Network

LINUX VM (BOOT2DOCKER.ISO)

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

DOCKER-MACHINE HELPS GETTING STARTED ON NON LINUX BOXES

DOCKER HOST

WILDFLY

MYSQL

REDIS

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

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

DOCKER IN A NUTSHELL

REGISTRYDOCKER HOST

DOCKER CLIENT

CONTAINER

CONTAINER

CONTAINER

IMAGE

IMAGE

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

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER LIFECYCLE

CREATED

STARTED

STOPPED

REMOVED

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

EXPOSING SERVICES

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST

?DOCKER HOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

80

443

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS

DOCKER HOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

80

443

8080

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

▸ Running ngnix

▸ Exposing ports

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

CREATED

STARTED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

CREATED

STARTED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

STARTED

STOPPED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM SURVIVES RESTARTS

CONTAINER: TEST F0A1172ADB12

foo

STARTED

STOPPED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM SURVIVES RESTARTS

CONTAINER: TEST F0A1172ADB12

foo

STARTED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS VERSIONED

CONTAINER: TEST F0A1172ADB12

foo

CREATED

STARTED

STOPPED

REMOVED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST F0A1172ADB12

foo

STOPPED

REMOVED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST D8C89E9BB6AB

CREATED

STARTED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS TRANSIENT

CONTAINER: TEST D8C89E9BB6AB

CREATED

STARTED

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE CONTAINER FILESYSTEM IS SEPARATED FROM THE HOST ENVIRONMENTHOST

CONTAINER: DREAMY_HUGLE B00F46831AF3

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

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

DEMO TIME

BUILDING A LOCAL TWITTER

▸ Bootstrap demo

▸ Basic container usage

▸ Running ngnix

▸ Exposing ports

▸ Sharing volumes and data

▸ Monitoring

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

THE DOCKERFILE IS THE RECIPE FOR AN IMAGE

IMAGE KOENIGHOTZE/JDK8

Dockerfile

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

READ WRITE LAYER

READ LAYER

READ LAYER

READ LAYER

OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM

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]

COMPLEX SCENARIOS USING COMPOSE

COMPOSITION

COMPLEX SCENARIOS USING COMPOSE

MANAGING DEPENDENCIES WITH DOCKER-COMPOSE

CONTAINER: DREAMY_HUGLE B00F46831AF3

CONTAINER: SLEEPY_GOLICK F0A1172ADB12

CONTAINER: JOLLY_BABBAGE D0BAE89AD214

COMPLEX SCENARIOS USING COMPOSE

USING DOCKER-COMPOSE FOR DEPENDENCIES*

BOOKING

ping mongodb

MONGODB GUEST

curl $GUEST_URI

*Note: Compose V1 Syntax

MOVIE CONTAINER

COMPLEX SCENARIOS USING COMPOSE

DOCKER SINGLE HOST NETWORKING USING LINKS

MOVIE.WAR

ACTOR CONTAINER

ACTOR.WAR

DEMO TIME

CREATING A SIMPLE COMPOSITION WITH SPRING-BOOT AND DOCKER

▸ Create simple web application

▸ Add database as container

▸ Create compositions file

▸ Add volumes

BEYOND DOCKER

WHAT IS NEXT?

▸ CoreOs and rkt

▸ Docker Swarm and Kubernetes

▸ Unikernels (!)

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

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/

THANK YOU!<david.schmitz@senacor.com>

BACKUP<>

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

top related