SlideShare a Scribd company logo
1 of 62
Download to read offline
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!
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
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
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
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
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
Ready Player One?
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
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

What's hot

Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerAdam Štipák
 
Docker Demystified - Virtual VMs without the Fat
Docker Demystified - Virtual VMs without the FatDocker Demystified - Virtual VMs without the Fat
Docker Demystified - Virtual VMs without the FatErik Osterman
 
Build optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and DockerBuild optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and DockerDmytro Patkovskyi
 
Persistent storage tailored for containers
Persistent storage tailored for containersPersistent storage tailored for containers
Persistent storage tailored for containersDocker, Inc.
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson LinHanLing Shen
 
Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017Christophe Furmaniak
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...dotCloud
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0All Things Open
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...Jérôme Petazzoni
 
Introduction to docker and oci
Introduction to docker and ociIntroduction to docker and oci
Introduction to docker and ociRomain Schlick
 
How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker Jonathan Martin
 
There is no container - Ori Pekelman
There is no container - Ori PekelmanThere is no container - Ori Pekelman
There is no container - Ori PekelmanParis Container Day
 
Docker - Lightweight Virtualization
Docker - Lightweight VirtualizationDocker - Lightweight Virtualization
Docker - Lightweight VirtualizationMehdi Hasan
 
Ganeti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made SimpleGaneti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made SimpleOSCON Byrum
 
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the UglyKubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Uglysmalltown
 
Security in a containerized world - Jessie Frazelle
Security in a containerized world - Jessie FrazelleSecurity in a containerized world - Jessie Frazelle
Security in a containerized world - Jessie FrazelleParis Container Day
 
Wordcamp Bratislava 2017 - Docker! Why?
Wordcamp Bratislava 2017 - Docker! Why?Wordcamp Bratislava 2017 - Docker! Why?
Wordcamp Bratislava 2017 - Docker! Why?Adam Štipák
 
Dockerin10mins
Dockerin10minsDockerin10mins
Dockerin10minsDawood M.S
 

What's hot (20)

Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker Demystified - Virtual VMs without the Fat
Docker Demystified - Virtual VMs without the FatDocker Demystified - Virtual VMs without the Fat
Docker Demystified - Virtual VMs without the Fat
 
Build optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and DockerBuild optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and Docker
 
Persistent storage tailored for containers
Persistent storage tailored for containersPersistent storage tailored for containers
Persistent storage tailored for containers
 
[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017Mesos swam-kubernetes-vds-02062017
Mesos swam-kubernetes-vds-02062017
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
 
.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0.NET on Linux: Entity Framework Core 1.0
.NET on Linux: Entity Framework Core 1.0
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Introduction to docker and oci
Introduction to docker and ociIntroduction to docker and oci
Introduction to docker and oci
 
猿でもわかる Helm
猿でもわかる Helm猿でもわかる Helm
猿でもわかる Helm
 
How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker
 
There is no container - Ori Pekelman
There is no container - Ori PekelmanThere is no container - Ori Pekelman
There is no container - Ori Pekelman
 
Docker - Lightweight Virtualization
Docker - Lightweight VirtualizationDocker - Lightweight Virtualization
Docker - Lightweight Virtualization
 
Ganeti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made SimpleGaneti Web Manager: Cluster Management Made Simple
Ganeti Web Manager: Cluster Management Made Simple
 
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the UglyKubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
 
Security in a containerized world - Jessie Frazelle
Security in a containerized world - Jessie FrazelleSecurity in a containerized world - Jessie Frazelle
Security in a containerized world - Jessie Frazelle
 
Wordcamp Bratislava 2017 - Docker! Why?
Wordcamp Bratislava 2017 - Docker! Why?Wordcamp Bratislava 2017 - Docker! Why?
Wordcamp Bratislava 2017 - Docker! Why?
 
Dockerin10mins
Dockerin10minsDockerin10mins
Dockerin10mins
 

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

ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...DynamicInfraDays
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersDocker, Inc.
 
Going Production with Docker and Swarm
Going Production with Docker and SwarmGoing Production with Docker and Swarm
Going Production with Docker and SwarmC4Media
 
Talk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about DockerTalk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about DockerWellington Silva
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkJérôme Petazzoni
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyJérôme Petazzoni
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and ContainersDocker, Inc.
 
Containers not just for production nov8
Containers not just for production nov8Containers not just for production nov8
Containers not just for production nov8HARITHA HARI
 
Truemotion Adventures in Containerization
Truemotion Adventures in ContainerizationTruemotion Adventures in Containerization
Truemotion Adventures in ContainerizationRyan Hunter
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesJérôme Petazzoni
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Richard Bullington-McGuire
 
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQIntroduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQdotCloud
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersJérôme Petazzoni
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tipsSamuel Chow
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to ContainersDharmit Shah
 
Docker on Power Systems
Docker on Power SystemsDocker on Power Systems
Docker on Power SystemsCesar Maciel
 

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

ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
ContainerDays NYC 2015: "Easing Your Way Into Docker: Lessons From a Journey ...
 
Container Days
Container DaysContainer Days
Container Days
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and Containers
 
Going Production with Docker and Swarm
Going Production with Docker and SwarmGoing Production with Docker and Swarm
Going Production with Docker and Swarm
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
JOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to dockerJOSA TechTalk: Introduction to docker
JOSA TechTalk: Introduction to docker
 
Talk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about DockerTalk on PHP Day Uruguay about Docker
Talk on PHP Day Uruguay about Docker
 
Introduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New YorkIntroduction to Docker at the Azure Meet-up in New York
Introduction to Docker at the Azure Meet-up in New York
 
Introduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange CountyIntroduction to Docker at Glidewell Laboratories in Orange County
Introduction to Docker at Glidewell Laboratories in Orange County
 
Introduction to Docker and Containers
Introduction to Docker and ContainersIntroduction to Docker and Containers
Introduction to Docker and Containers
 
Containers not just for production nov8
Containers not just for production nov8Containers not just for production nov8
Containers not just for production nov8
 
Truemotion Adventures in Containerization
Truemotion Adventures in ContainerizationTruemotion Adventures in Containerization
Truemotion Adventures in Containerization
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los Angeles
 
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
Extensible dev secops pipelines with Jenkins, Docker, Terraform, and a kitche...
 
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQIntroduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to Containers
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
 
Docker on Power Systems
Docker on Power SystemsDocker on Power Systems
Docker on Power Systems
 

Recently uploaded

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
The Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingThe Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingSelcen Ozturkcan
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central BankingThe Evolution of Money: Digital Transformation and CBDCs in Central Banking
The Evolution of Money: Digital Transformation and CBDCs in Central Banking
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

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!
  • 4.
  • 5.
  • 6.
  • 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
  • 13.
  • 14.
  • 15.
  • 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
  • 21.
  • 22.
  • 23.
  • 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
  • 28.
  • 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
  • 39.
  • 40.
  • 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
  • 48.
  • 49.
  • 51.
  • 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
  • 56.
  • 57.
  • 58.
  • 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)