Taking Docker to
Production
Bret Fisher
DevOps Consultant

Docker Captain

Author of Udemy Docker Mastery
Add
picture
here
Why Are We Here?
● Want Docker in production
● Want to orchestrate containers
● Need to make educated project decisions
● Learn which requirements could be optional
● Learn 80's/90's video games
● Hear bad analogies relating retro games to Docker
A Bit About Me
●Geek since 5th Grade
●IT Sysadmin+Dev since 1994
●Owned *REAL* Atari 2600, NES, SNES, Sega
Genesis, Sinclair, TRS-80, Packard Bell 386
●Like Geek Trivia. Lets Have Some!
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Project Docker
Super Project Advice Special Turbo Champion Edition
Limit Your Simultaneous Innovation
● Many initial container projects are too big in scope
● Solutions you maybe don't need day one:
○ Fully automatic CI/CD
○ Dynamic performance scaling
○ Containerizing all or nothing
○ Starting with persistent data
Legacy Apps Work In Containers Too
● Microservice conversion isn't required
● 12 Factor is a horizon we're always chasing
● Don't let these ideals delay containerization
Dockerfile Power-Ups
What To Focus On First: Dockerfiles
●More important than fancy orchestration
●It's your new build and environment
documentation
●Study Dockerfile/ENTRYPOINT of Hub
Officials
●FROM Official distros that are most familiar
Dockerfile Maturity Model
●Make it start
●Make it log all things to stdout/stderr
●Make it documented in file
●Make it work for others
●Make it lean
●Make it scale
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Dockerfile
Anti-patterns
Dockerfile Anti-pattern: Trapping Data
● Problem: Storing unique data in container
● Solution: Define VOLUME for each location
Dockerfile Anti-pattern: Using Latest
● Latest = Image builds will be ¯_(ツ)_/¯
● Problem: Image builds pull FROM
latest
● Solution: Use specific FROM tags
● Problem: Image builds install latest
packages
● Solution: Specify version for critical
apt/yum/apk packages
Dockerfile Anti-pattern: Leaving Default Config
● Problem: Not changing app defaults, or blindly copying VM conf
○ e.g. php.ini, mysql.conf.d, java memory
● Solution: Update default configs via ENV, RUN, and ENTRYPOINT
Dockerfile Anti-pattern: Environment Specific
● Problem: Copy in environment config at image build
● Solution: Single Dockerfile with default ENV's, and
overwrite per-environment with ENTRYPOINT script
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Lets Slay Some Infrastructure Dragons
The Big 3 Decisions
Containers-on-VM or Container-on-Bare-Metal
●Do either, or both. Lots of pros/cons to either
●Stick with what you know at first
●Do some basic performance testing. You will learn lots!
●2017 Docker Inc. and HPE whitepaper on MySQL benchmark
○(authored by yours truly, and others)
○bretfisher.com/dockercon17eu
OS Linux Distribution/Kernel Matters
● Docker is very kernel and storage driver dependent
● Innovations/fixes are still happening here
● "Minimum" version != "best" version
● No pre-existing opinion? Ubuntu 16.04 LTS
○ Popular, well-tested with Docker
○ 4.x Kernel and wide storage driver support
● Or InfraKit and LinuxKit!
● Get correct Docker for your distro from store.docker.com
Container Base Distribution: Which One?
● Which FROM image should you use?
● Don't make a decision based on image size (remember it's
Single Instance Storage)
● At first: match your existing deployment process
● Consider changing to Alpine later, maybe much later
Taking Docker to Production: What You Need to Know and Decide
Build Your Empire Swarm
Good Defaults: Swarm Architectures
● Simple sizing guidelines based off:
○ Docker internal testing
○ Docker reference architectures
○ Real world deployments
○ Swarm3k lessons learned
Baby Swarm: 1-Node
●"docker swarm init" done!
●Solo VM's do it, so can
Swarm
●Gives you more features
then docker run
HA Swarm: 3-Node
●Minimum for HA
●All Managers
●One node can fail
●Use when very small budget
●Pet projects or Test/CI
Biz Swarm: 5-Node
●Better high-availability
●All Managers
●Two nodes can fail
●My minimum for uptime that
affects $$$
Flexy Swarm: 10+ Nodes
●5 dedicated Managers
●Workers in DMZ
●Anything beyond 5 nodes, stick with
5 Managers and rest Workers
●Control container placement with
labels + constraints
Swole Swarm: 100+ Nodes
●5 dedicated managers
●Resize Managers as you grow
●Multiple Worker subnets on
Private/DMZ
●Control container placement with
labels + constraints
Don't Turn Cattle into Pets
● Assume nodes will be replaced
● Assume containers will be recreated
● Docker for (AWS/Azure) does this
● LinuxKit and InfraKit expect it
Reasons for Multiple Swarms
Bad Reasons
● Different hardware
configurations (or OS!)
● Different subnets or
security groups
● Different availability zones
●Security boundaries for
compliance
Good Reasons
● Learning: Run Stuff on Test
Swarm
● Geographical boundaries
● Management boundaries
using Docker API (or Docker
EE RBAC, or other auth plugin)
What About Windows Server 2016 Swarm?
●Hard to be "Windows Only Swarm", mix with Linux nodes
●Much of those tools are Linux only
●Windows = Less choice, but easier path
●My recommendation:
○Managers on Linux
○Reserve Windows for Windows-exclusive workloads
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Bring In
Reinforcements
Outsource Well-Defined Plumbing
● Beware the "not implemented here" syndrome
● If challenge to implement and maintain
● + SaaS/commercial market is mature
● = Opportunities for outsourcing
Outsourcing: For Your Consideration
●Image registry
●Logs
●Monitoring and alerting
● Tools/Projects: https://github.com/cncf/landscape
Tech Stacks
Designs for a full-featured cluster
Pure Open Source Self-Hosted Tech Stack
Swarm GUI Portainer
Central Monitoring Prometheus + Grafana
Central Logging ELK
Layer 7 Proxy Flow-Proxy Traefik
Registry Docker Distribution + Portus
CI/CD Jenkins
Storage REX-Ray
Networking Docker Swarm
Orchestration Docker Swarm
Runtime Docker
HW / OS InfraKit Terraform
Also
Functions As A Service:
OpenFaaS
Docker for X: Cheap and Easy Tech Stack
Swarm GUI Portainer
Central Monitoring Librato Sysdig
Central Logging Docker for AWS/Azure
Layer 7 Proxy Flow-Proxy Traefik
Registry Docker Hub Quay
CI/CD Codeship TravisCI
Storage Docker for AWS/Azure
Networking Docker Swarm
Orchestration Docker Swarm
Runtime Docker
HW / OS Docker for AWS/Azure
Docker Enterprise Edition + Docker for X
Swarm GUI Docker EE (UCP)
Central Monitoring Librato Sysdig
Central Logging Docker for AWS/Azure
Layer 7 Proxy Docker EE (UCP)
Registry Docker EE (DTR)
CI/CD Codeship TravisCI
Storage Docker for AWS/Azure
Networking Docker Swarm
Orchestration Docker Swarm
Runtime Docker EE
HW / OS Docker for AWS/Azure
Also
Image Security Scanning
Role-Based Access Cont
Image Promotion
Content Trust
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Ready Player One?
Taking Docker to Production: What You Need to Know and Decide
4 Can Co-Op,
But 1 Plays

Just Fine
Must We Have An Orchestrator?
● Let's accelerate your docker migration even more
● Already have good infrastructure automation?
● Maybe you have great VM autoscale?
● Like the security boundary of the VM OS?
One Container Per VM
● Why don't we talk about this more?
● Least amount of infrastructure change but also:
○ Run on Dockerfiles recipes rather then Puppet etc.
○ Improve your Docker management skills
○ Simplify your VM OS build
One Container Per VM: Not New
● Windows is doing it with Hyper-V Containers
● Linux is doing it with Intel Clear Containers
● LinuxKit will make this easier: Immutable OS
● Watch out for Windows "LCOW" using LinuxKit
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Taking Docker to Production: What You Need to Know and Decide
Summary
●Trim the optional requirements at first
●First, focus on Dockerfile/docker-compose.yml
●Watch out for Dockerfile anti-patterns
●Stick with familiar OS and FROM images
●Grow Swarm as you grow
●Find ways to outsource plumbing
●Realize parts of your tech stack may change, stay flexible
Give Session Feedback in App!
● Help me come back next year
😬
Thank You!



Slides: bretfisher.com/dockercon17eu

●My Bestselling Docker Mastery Video Course
○90% off for DockerCon
○bretfisher.com/dockermastery
Honorable Mentions
●Metroid ('83 NES)
●Mega Man ('87 NES)
●Wolfenstein 3D ('92 PC)
●Homeworld ('99 PC)
●Legend Of Zelda ('86
NES)
●Mortal Kombat ('92)
●Doom/Quake ('93 PC)
●Contra/Castlevania ('86 NES)
● Hitchhiker's GTTG ('84
TRS-80)
●Zenophobe ('87 Arcade)
●Battlezone ('80 Arcade)

More Related Content

PDF
How to Improve Your Image Builds Using Advance Docker Build
PDF
Node.js Rocks in Docker for Dev and Ops
PDF
DockerCon EU 2015: Trading Bitcoin with Docker
PDF
DCSF19 How To Build Your Containerization Strategy
PDF
Docker to the Rescue of an Ops Team
PDF
DCSF19 CMD and Conquer: Containerizing the Monolith
PDF
DCEU 18: Building Your Development Pipeline
PDF
Container orchestration from theory to practice
How to Improve Your Image Builds Using Advance Docker Build
Node.js Rocks in Docker for Dev and Ops
DockerCon EU 2015: Trading Bitcoin with Docker
DCSF19 How To Build Your Containerization Strategy
Docker to the Rescue of an Ops Team
DCSF19 CMD and Conquer: Containerizing the Monolith
DCEU 18: Building Your Development Pipeline
Container orchestration from theory to practice

What's hot (20)

PDF
Docker Platform Internals: Taking runtimes and image creation to the next lev...
PDF
Docker for Java Developers - Fabiane Nardon and Arun gupta
PDF
DockerCon EU 2015: Shipping Manifests, Bill of Lading and Docker Metadata and...
PDF
Docker on Google App Engine
PPTX
Windows Server Containers- How we hot here and architecture deep dive
PDF
Docker for developers on mac and windows
PDF
Docker for any type of workload and any IT Infrastructure
PPTX
Docker Container As A Service - March 2016
PDF
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
PDF
Docker Multi-arch All The Things
PDF
ContainerDayVietnam2016: Django Development with Docker
PPTX
DockerCon EU 2015: Stop Being Lazy and Test Your Software!
PDF
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
PDF
Docker, the Future of DevOps
PDF
Docker on Docker
PDF
Docker?!?! But I'm a SysAdmin
PDF
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
PDF
What’s New in Docker - Victor Vieux, Docker
PDF
DockerCon EU 2015: The Latest in Docker Engine
PDF
Building Your Docker Swarm Tech Stack
Docker Platform Internals: Taking runtimes and image creation to the next lev...
Docker for Java Developers - Fabiane Nardon and Arun gupta
DockerCon EU 2015: Shipping Manifests, Bill of Lading and Docker Metadata and...
Docker on Google App Engine
Windows Server Containers- How we hot here and architecture deep dive
Docker for developers on mac and windows
Docker for any type of workload and any IT Infrastructure
Docker Container As A Service - March 2016
The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove
Docker Multi-arch All The Things
ContainerDayVietnam2016: Django Development with Docker
DockerCon EU 2015: Stop Being Lazy and Test Your Software!
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
Docker, the Future of DevOps
Docker on Docker
Docker?!?! But I'm a SysAdmin
From Zero Docker to Hackathon Winner - Marcos Lilljedahl and Jimena Tapia
What’s New in Docker - Victor Vieux, Docker
DockerCon EU 2015: The Latest in Docker Engine
Building Your Docker Swarm Tech Stack
Ad

Viewers also liked (20)

PDF
How and Why Prometheus' New Storage Engine Pushes the Limits of Time Series D...
PDF
What's New in Docker
PDF
The Value Of Diverse Experiences
PDF
Learning Docker from Square One
PDF
Integrating Docker EE into Société Générale's Existing Enterprise IT Systems
PDF
A Strong Belief, Loosely Held: Bringing Empathy to IT
PDF
Troubleshooting Tips from a Docker Support Engineer
PDF
Container Storage Best Practices in 2017
PDF
Kubernetes in Docker
PDF
Back to the Future: Containerize Legacy Applications
PDF
My Journey To Go
PDF
The Truth Behind Serverless
PDF
Docker to the Rescue of an Ops Team
PDF
Repainting the Past with Distributed Machine Learning and Docker
PDF
Android Meets Docker
PDF
The Fairy Tale of the One Command Build Script
PDF
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
PDF
Looking Under The Hood: containerD
PDF
Skynet vs. Planet of The Apes: Duel!
PDF
Tales of Training: Scaling CodeLabs with Swarm Mode and Docker-Compose
How and Why Prometheus' New Storage Engine Pushes the Limits of Time Series D...
What's New in Docker
The Value Of Diverse Experiences
Learning Docker from Square One
Integrating Docker EE into Société Générale's Existing Enterprise IT Systems
A Strong Belief, Loosely Held: Bringing Empathy to IT
Troubleshooting Tips from a Docker Support Engineer
Container Storage Best Practices in 2017
Kubernetes in Docker
Back to the Future: Containerize Legacy Applications
My Journey To Go
The Truth Behind Serverless
Docker to the Rescue of an Ops Team
Repainting the Past with Distributed Machine Learning and Docker
Android Meets Docker
The Fairy Tale of the One Command Build Script
Cilium: Kernel Native Security & DDOS Mitigation for Microservices with BPF
Looking Under The Hood: containerD
Skynet vs. Planet of The Apes: Duel!
Tales of Training: Scaling CodeLabs with Swarm Mode and Docker-Compose
Ad

Similar to Taking Docker to Production: What You Need to Know and Decide (20)

PDF
Container Days
PDF
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
PDF
A Gentle Introduction to Docker and Containers
PDF
Going Production with Docker and Swarm
PPTX
Run automated tests in Docker
PDF
JOSA TechTalk: Introduction to docker
PDF
Talk on PHP Day Uruguay about Docker
PDF
Introduction to Docker at the Azure Meet-up in New York
PDF
Introduction to Docker at Glidewell Laboratories in Orange County
PDF
Real-World Docker: 10 Things We've Learned
PDF
Introduction to Docker and Containers
PPTX
Containers not just for production nov8
PPTX
Truemotion Adventures in Containerization
PDF
Docker 0.11 at MaxCDN meetup in Los Angeles
PDF
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
PDF
A Gentle Introduction To Docker And All Things Containers
PDF
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
PDF
Docker primer and tips
PDF
Introduction to Containers
PDF
JOSA TechTalks - Docker in Production
Container Days
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
A Gentle Introduction to Docker and Containers
Going Production with Docker and Swarm
Run automated tests in Docker
JOSA TechTalk: Introduction to docker
Talk on PHP Day Uruguay about Docker
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at Glidewell Laboratories in Orange County
Real-World Docker: 10 Things We've Learned
Introduction to Docker and Containers
Containers not just for production nov8
Truemotion Adventures in Containerization
Docker 0.11 at MaxCDN meetup in Los Angeles
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
A Gentle Introduction To Docker And All Things Containers
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
Docker primer and tips
Introduction to Containers
JOSA TechTalks - Docker in Production

More from Docker, Inc. (20)

PDF
Containerize Your Game Server for the Best Multiplayer Experience
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
Securing Your Containerized Applications with NGINX
PDF
How To Build and Run Node Apps with Docker and Compose
PDF
Hands-on Helm
PDF
Distributed Deep Learning with Docker at Salesforce
PDF
The First 10M Pulls: Building The Official Curl Image for Docker Hub
PDF
Monitoring in a Microservices World
PDF
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
PDF
Predicting Space Weather with Docker
PDF
Become a Docker Power User With Microsoft Visual Studio Code
PDF
How to Use Mirroring and Caching to Optimize your Container Registry
PDF
Monolithic to Microservices + Docker = SDLC on Steroids!
PDF
Kubernetes at Datadog Scale
PDF
Labels, Labels, Labels
PDF
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
PDF
Build & Deploy Multi-Container Applications to AWS
PDF
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
PDF
Developing with Docker for the Arm Architecture
PDF
Sharing is Caring: How to Begin Speaking at Conferences
Containerize Your Game Server for the Best Multiplayer Experience
Build & Deploy Multi-Container Applications to AWS
Securing Your Containerized Applications with NGINX
How To Build and Run Node Apps with Docker and Compose
Hands-on Helm
Distributed Deep Learning with Docker at Salesforce
The First 10M Pulls: Building The Official Curl Image for Docker Hub
Monitoring in a Microservices World
COVID-19 in Italy: How Docker is Helping the Biggest Italian IT Company Conti...
Predicting Space Weather with Docker
Become a Docker Power User With Microsoft Visual Studio Code
How to Use Mirroring and Caching to Optimize your Container Registry
Monolithic to Microservices + Docker = SDLC on Steroids!
Kubernetes at Datadog Scale
Labels, Labels, Labels
Using Docker Hub at Scale to Support Micro Focus' Delivery and Deployment Model
Build & Deploy Multi-Container Applications to AWS
From Fortran on the Desktop to Kubernetes in the Cloud: A Windows Migration S...
Developing with Docker for the Arm Architecture
Sharing is Caring: How to Begin Speaking at Conferences

Recently uploaded (20)

PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
CloudStack 4.21: First Look Webinar slides
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPTX
The various Industrial Revolutions .pptx
PDF
Architecture types and enterprise applications.pdf
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
PDF
UiPath Agentic Automation session 1: RPA to Agents
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
Microsoft Excel 365/2024 Beginner's training
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
Five Habits of High-Impact Board Members
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
Configure Apache Mutual Authentication
PDF
STKI Israel Market Study 2025 version august
PPT
Geologic Time for studying geology for geologist
DOCX
search engine optimization ppt fir known well about this
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
CloudStack 4.21: First Look Webinar slides
A contest of sentiment analysis: k-nearest neighbor versus neural network
The various Industrial Revolutions .pptx
Architecture types and enterprise applications.pdf
Chapter 5: Probability Theory and Statistics
Consumable AI The What, Why & How for Small Teams.pdf
NewMind AI Weekly Chronicles – August ’25 Week III
Enhancing plagiarism detection using data pre-processing and machine learning...
UiPath Agentic Automation session 1: RPA to Agents
Getting started with AI Agents and Multi-Agent Systems
Microsoft Excel 365/2024 Beginner's training
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
Five Habits of High-Impact Board Members
Zenith AI: Advanced Artificial Intelligence
Configure Apache Mutual Authentication
STKI Israel Market Study 2025 version august
Geologic Time for studying geology for geologist
search engine optimization ppt fir known well about this
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf

Taking Docker to Production: What You Need to Know and Decide

  • 1. Taking Docker to Production Bret Fisher DevOps Consultant
 Docker Captain
 Author of Udemy Docker Mastery Add picture here
  • 2. Why Are We Here? ● Want Docker in production ● Want to orchestrate containers ● Need to make educated project decisions ● Learn which requirements could be optional ● Learn 80's/90's video games ● Hear bad analogies relating retro games to Docker
  • 3. A Bit About Me ●Geek since 5th Grade ●IT Sysadmin+Dev since 1994 ●Owned *REAL* Atari 2600, NES, SNES, Sega Genesis, Sinclair, TRS-80, Packard Bell 386 ●Like Geek Trivia. Lets Have Some!
  • 7. Project Docker Super Project Advice Special Turbo Champion Edition
  • 8. Limit Your Simultaneous Innovation ● Many initial container projects are too big in scope ● Solutions you maybe don't need day one: ○ Fully automatic CI/CD ○ Dynamic performance scaling ○ Containerizing all or nothing ○ Starting with persistent data
  • 9. Legacy Apps Work In Containers Too ● Microservice conversion isn't required ● 12 Factor is a horizon we're always chasing ● Don't let these ideals delay containerization
  • 11. What To Focus On First: Dockerfiles ●More important than fancy orchestration ●It's your new build and environment documentation ●Study Dockerfile/ENTRYPOINT of Hub Officials ●FROM Official distros that are most familiar
  • 12. Dockerfile Maturity Model ●Make it start ●Make it log all things to stdout/stderr ●Make it documented in file ●Make it work for others ●Make it lean ●Make it scale
  • 17. Dockerfile Anti-pattern: Trapping Data ● Problem: Storing unique data in container ● Solution: Define VOLUME for each location
  • 18. Dockerfile Anti-pattern: Using Latest ● Latest = Image builds will be ¯_(ツ)_/¯ ● Problem: Image builds pull FROM latest ● Solution: Use specific FROM tags ● Problem: Image builds install latest packages ● Solution: Specify version for critical apt/yum/apk packages
  • 19. Dockerfile Anti-pattern: Leaving Default Config ● Problem: Not changing app defaults, or blindly copying VM conf ○ e.g. php.ini, mysql.conf.d, java memory ● Solution: Update default configs via ENV, RUN, and ENTRYPOINT
  • 20. Dockerfile Anti-pattern: Environment Specific ● Problem: Copy in environment config at image build ● Solution: Single Dockerfile with default ENV's, and overwrite per-environment with ENTRYPOINT script
  • 24. Lets Slay Some Infrastructure Dragons The Big 3 Decisions
  • 25. Containers-on-VM or Container-on-Bare-Metal ●Do either, or both. Lots of pros/cons to either ●Stick with what you know at first ●Do some basic performance testing. You will learn lots! ●2017 Docker Inc. and HPE whitepaper on MySQL benchmark ○(authored by yours truly, and others) ○bretfisher.com/dockercon17eu
  • 26. OS Linux Distribution/Kernel Matters ● Docker is very kernel and storage driver dependent ● Innovations/fixes are still happening here ● "Minimum" version != "best" version ● No pre-existing opinion? Ubuntu 16.04 LTS ○ Popular, well-tested with Docker ○ 4.x Kernel and wide storage driver support ● Or InfraKit and LinuxKit! ● Get correct Docker for your distro from store.docker.com
  • 27. Container Base Distribution: Which One? ● Which FROM image should you use? ● Don't make a decision based on image size (remember it's Single Instance Storage) ● At first: match your existing deployment process ● Consider changing to Alpine later, maybe much later
  • 30. Good Defaults: Swarm Architectures ● Simple sizing guidelines based off: ○ Docker internal testing ○ Docker reference architectures ○ Real world deployments ○ Swarm3k lessons learned
  • 31. Baby Swarm: 1-Node ●"docker swarm init" done! ●Solo VM's do it, so can Swarm ●Gives you more features then docker run
  • 32. HA Swarm: 3-Node ●Minimum for HA ●All Managers ●One node can fail ●Use when very small budget ●Pet projects or Test/CI
  • 33. Biz Swarm: 5-Node ●Better high-availability ●All Managers ●Two nodes can fail ●My minimum for uptime that affects $$$
  • 34. Flexy Swarm: 10+ Nodes ●5 dedicated Managers ●Workers in DMZ ●Anything beyond 5 nodes, stick with 5 Managers and rest Workers ●Control container placement with labels + constraints
  • 35. Swole Swarm: 100+ Nodes ●5 dedicated managers ●Resize Managers as you grow ●Multiple Worker subnets on Private/DMZ ●Control container placement with labels + constraints
  • 36. Don't Turn Cattle into Pets ● Assume nodes will be replaced ● Assume containers will be recreated ● Docker for (AWS/Azure) does this ● LinuxKit and InfraKit expect it
  • 37. Reasons for Multiple Swarms Bad Reasons ● Different hardware configurations (or OS!) ● Different subnets or security groups ● Different availability zones ●Security boundaries for compliance Good Reasons ● Learning: Run Stuff on Test Swarm ● Geographical boundaries ● Management boundaries using Docker API (or Docker EE RBAC, or other auth plugin)
  • 38. What About Windows Server 2016 Swarm? ●Hard to be "Windows Only Swarm", mix with Linux nodes ●Much of those tools are Linux only ●Windows = Less choice, but easier path ●My recommendation: ○Managers on Linux ○Reserve Windows for Windows-exclusive workloads
  • 42. Outsource Well-Defined Plumbing ● Beware the "not implemented here" syndrome ● If challenge to implement and maintain ● + SaaS/commercial market is mature ● = Opportunities for outsourcing
  • 43. Outsourcing: For Your Consideration ●Image registry ●Logs ●Monitoring and alerting ● Tools/Projects: https://github.com/cncf/landscape
  • 44. Tech Stacks Designs for a full-featured cluster
  • 45. Pure Open Source Self-Hosted Tech Stack Swarm GUI Portainer Central Monitoring Prometheus + Grafana Central Logging ELK Layer 7 Proxy Flow-Proxy Traefik Registry Docker Distribution + Portus CI/CD Jenkins Storage REX-Ray Networking Docker Swarm Orchestration Docker Swarm Runtime Docker HW / OS InfraKit Terraform Also Functions As A Service: OpenFaaS
  • 46. Docker for X: Cheap and Easy Tech Stack Swarm GUI Portainer Central Monitoring Librato Sysdig Central Logging Docker for AWS/Azure Layer 7 Proxy Flow-Proxy Traefik Registry Docker Hub Quay CI/CD Codeship TravisCI Storage Docker for AWS/Azure Networking Docker Swarm Orchestration Docker Swarm Runtime Docker HW / OS Docker for AWS/Azure
  • 47. Docker Enterprise Edition + Docker for X Swarm GUI Docker EE (UCP) Central Monitoring Librato Sysdig Central Logging Docker for AWS/Azure Layer 7 Proxy Docker EE (UCP) Registry Docker EE (DTR) CI/CD Codeship TravisCI Storage Docker for AWS/Azure Networking Docker Swarm Orchestration Docker Swarm Runtime Docker EE HW / OS Docker for AWS/Azure Also Image Security Scanning Role-Based Access Cont Image Promotion Content Trust
  • 52. 4 Can Co-Op, But 1 Plays
 Just Fine
  • 53. Must We Have An Orchestrator? ● Let's accelerate your docker migration even more ● Already have good infrastructure automation? ● Maybe you have great VM autoscale? ● Like the security boundary of the VM OS?
  • 54. One Container Per VM ● Why don't we talk about this more? ● Least amount of infrastructure change but also: ○ Run on Dockerfiles recipes rather then Puppet etc. ○ Improve your Docker management skills ○ Simplify your VM OS build
  • 55. One Container Per VM: Not New ● Windows is doing it with Hyper-V Containers ● Linux is doing it with Intel Clear Containers ● LinuxKit will make this easier: Immutable OS ● Watch out for Windows "LCOW" using LinuxKit
  • 59. Summary ●Trim the optional requirements at first ●First, focus on Dockerfile/docker-compose.yml ●Watch out for Dockerfile anti-patterns ●Stick with familiar OS and FROM images ●Grow Swarm as you grow ●Find ways to outsource plumbing ●Realize parts of your tech stack may change, stay flexible
  • 60. Give Session Feedback in App! ● Help me come back next year 😬
  • 61. Thank You!
 
 Slides: bretfisher.com/dockercon17eu
 ●My Bestselling Docker Mastery Video Course ○90% off for DockerCon ○bretfisher.com/dockermastery
  • 62. Honorable Mentions ●Metroid ('83 NES) ●Mega Man ('87 NES) ●Wolfenstein 3D ('92 PC) ●Homeworld ('99 PC) ●Legend Of Zelda ('86 NES) ●Mortal Kombat ('92) ●Doom/Quake ('93 PC) ●Contra/Castlevania ('86 NES) ● Hitchhiker's GTTG ('84 TRS-80) ●Zenophobe ('87 Arcade) ●Battlezone ('80 Arcade)