4. THE NEED FOR CONTAINERS
TRADITIONAL SOFTWARE DELIVERY SUFFERS FROM GAP BETWEEN DEV AND PROD
STABILITY AND ROBUSTNESSFLEXIBILITY
Development Production
5. 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
…
?
9. 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
10. THE NEED FOR CONTAINERS
PACKAGE ONCE
DEPLOY ANYWHERE
CODE
RUNTIME SYSTEM TOOLS
LIBRARIES
Container
11. 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
12. THE NEED FOR CONTAINERS
VIRTUALIZATION VS. CONTAINERS
SPEED FOOTPRINT SIMPLICITY
17. 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
18. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
DOCKER IN A NUTSHELL
REGISTRYDOCKER HOST
DOCKER CLIENT
CONTAINER
CONTAINER
CONTAINER
IMAGE
IMAGE
19. 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
20. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
CONTAINER LIFECYCLE
CREATED
STARTED
STOPPED
REMOVED
23. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST
24. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
CONTAINER PORTS ARE NOT VISIBLE OUTSIDE OF THE DOCKER HOST
?
DOCKER HOST
CONTAINER: DREAMY_HUGLE
B00F46831AF3
80
443
25. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS
26. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
CONTAINER PORTS MUST BE MAPPED TO EXTERNALLY VISIBLE PORTS
DOCKER HOST
CONTAINER: DREAMY_HUGLE
B00F46831AF3
80
443
8080
27. DEMO TIME
BUILDING A LOCAL TWITTER
▸ Bootstrap demo
▸ Basic container usage
▸ Running ngnix
▸ Exposing ports
28. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS VERSIONED
CONTAINER: TEST
F0A1172ADB12
CREATED
STARTED
29. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS VERSIONED
CONTAINER: TEST
F0A1172ADB12
foo
CREATED
STARTED
30. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS VERSIONED
CONTAINER: TEST
F0A1172ADB12
foo
STARTED
STOPPED
31. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM SURVIVES RESTARTS
CONTAINER: TEST
F0A1172ADB12
foo
STARTED
STOPPED
32. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM SURVIVES RESTARTS
CONTAINER: TEST
F0A1172ADB12
foo
STARTED
33. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS VERSIONED
CONTAINER: TEST
F0A1172ADB12
foo
CREATED
STARTED
STOPPED
REMOVED
34. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS TRANSIENT
CONTAINER: TEST
F0A1172ADB12
foo
STOPPED
REMOVED
35. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS TRANSIENT
CONTAINER: TEST
D8C89E9BB6AB
CREATED
STARTED
36. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS TRANSIENT
CONTAINER: TEST
D8C89E9BB6AB
CREATED
STARTED
37. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE CONTAINER FILESYSTEM IS SEPARATED FROM THE HOST ENVIRONMENT
HOST
CONTAINER: DREAMY_HUGLE
B00F46831AF3
38. 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
39. 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
40. DEMO TIME
BUILDING A LOCAL TWITTER
▸ Bootstrap demo
▸ Basic container usage
▸ Running ngnix
▸ Exposing ports
▸ Sharing volumes and data
▸ Monitoring
41. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
THE DOCKERFILE IS THE RECIPE FOR AN IMAGE
IMAGE
KOENIGHOTZE/JDK8
Dockerfile
42. OVERVIEW: DOCKER AND THE DOCKER ECOSYSTEM
READ WRITE LAYER
READ LAYER
READ LAYER
READ LAYER
44. 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]
49. DEMO TIME
CREATING A SIMPLE COMPOSITION WITH SPRING-BOOT AND DOCKER
▸ Create simple web application
▸ Add database as container
▸ Create compositions file
▸ Add volumes
50. BEYOND DOCKER
WHAT IS NEXT?
▸ CoreOs and rkt
▸ Docker Swarm and Kubernetes
▸ Unikernels (!)
51. 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
52. 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/