Docker for the Brave
-
Upload
david-schmitz -
Category
Technology
-
view
349 -
download
0
Transcript of Docker for the Brave
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!<[email protected]>
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