SlideShare a Scribd company logo
An introduction to Docker
About Me
Brayden Winterton
● Computer Science Major at BYU
● Head of BYU Production Services
Development Team
How I use docker:
● Development environments
● CI/CD pipeline
● Clustered Production Environments
Survey
● Who here has heard of Docker?
● Who has used Docker before?
● Who uses Docker as part of their daily
workflow?
What is Docker?
In simpler times..
Server
Host OS
Lamp Stack
LAMP
Bins/Libs
Today
Matrix from Hell
We’ve seen this before….
Solution?
Docker: a container for applications
Docker fixes the Matrix
from Hell!
What is Docker?
Docker Engine:
● CLI
● Docker Daemon
● Runs the containers
Docker Hub:
● Sharing applications/containers
● Used in automating workflows
● Much like Github
Why?
Why developers love it:
● Devs can build apps using any language and toolchain
● Build once, run anywhere
● Docker creates a clean portable runtime for the app
● No more worries about missing dependencies
● Peace of mind knowing that apps will not conflict (nor
will their dependencies)
● Compatibility concerns go out the window
● Automated testing, building, packaging, etc becomes
much more simple.
● Fast, lightweight runtime environments
Why sysadmins love it:
● Standardized, repeatable environments
● No more “works on my machine”
● Abstract application from OS and Infrastructure
● Flexibility in where to run the application
● Deployment driven by business priorities
● Rapid scale-up and scale-down to respond to load
● Eliminate inconsistencies between environments
● Increase reliability and speed of CI/CD systems
● TL;DR: Deploy any app, to any infrastructure
Want to separate concerns?
Development:
● Worries about what’s
inside the container:
o Code
o Libraries
o Data
o Applications
● Assumes that all
environments look the
same
Operations:
● Worries about what’s
outside the container:
o Logging
o Monitoring
o Configurations
● All containers start, stop,
reload, and accept
configuration the same
way
Want to combine concerns?
● Give developers access to existing
resources
● Allow developers to deploy built containers
to infrastructure
o Either using Continuous Deployment or a
standardized method
● Make the developers wake up in the middle
of the night to fix it
Isn’t this like using a VM?
Why are containers lighter?
AKA: Demo time
Let’s see it!
Running a real application in a container,
and port management
Ok that was cute, lets see
a real example
Volumes
Image modification
Linking Containers
Getting multiple containers to work together
Orchestration
Questions?
Brayden Winterton
● Twitter: @braydenw
● Email: bwinterton@gmail.com
● Github: bwinterton

More Related Content

What's hot

Onnx and onnx runtime
Onnx and onnx runtimeOnnx and onnx runtime
Onnx and onnx runtime
Vishwas N
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Борис Зора
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and culture
James Turnbull
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the Trenches
Codefresh
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android apps
Hugo Josefson
 
Why You Should be Using Multi-stage Docker Builds in 2019
Why You Should be Using Multi-stage Docker Builds in 2019Why You Should be Using Multi-stage Docker Builds in 2019
Why You Should be Using Multi-stage Docker Builds in 2019
Codefresh
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
Denis Ristic
 
Continuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzContinuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVz
Denis Ristic
 
Docker for fun and profit!
Docker for fun and profit!Docker for fun and profit!
Docker for fun and profit!
Rob Wilkinson
 
mpandya_poster
mpandya_postermpandya_poster
mpandya_poster
Mihir Pandya
 
Cleaner Code Through Test-Driven Development
Cleaner Code Through Test-Driven DevelopmentCleaner Code Through Test-Driven Development
Cleaner Code Through Test-Driven Development
All Things Open
 
DevOps in realtime
DevOps in realtimeDevOps in realtime
DevOps in realtime
Andriy Samilyak
 
Kotlin Multiplatfom In Action
Kotlin Multiplatfom In ActionKotlin Multiplatfom In Action
Kotlin Multiplatfom In Action
Marko Mitic
 
Kotlin Multiplatfom In Action
Kotlin Multiplatfom In ActionKotlin Multiplatfom In Action
Kotlin Multiplatfom In Action
Marko Mitic
 
Building CI/CD Pipelines for Kubernetes
Building CI/CD Pipelines for KubernetesBuilding CI/CD Pipelines for Kubernetes
Building CI/CD Pipelines for Kubernetes
Christian Melendez
 
Docker
DockerDocker
Up & Running with Docker
Up & Running with DockerUp & Running with Docker
Up & Running with Docker
Mohammed S.Zaghloul
 
CD NYC From Source Code to Production
CD NYC From Source Code to ProductionCD NYC From Source Code to Production
CD NYC From Source Code to Production
Kontena, Inc.
 
Deploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and KubernetesDeploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and Kubernetes
Jessica Deen
 
The Beam Vision for Portability: "Write once run anywhere"
The Beam Vision for Portability: "Write once run anywhere"The Beam Vision for Portability: "Write once run anywhere"
The Beam Vision for Portability: "Write once run anywhere"
Knoldus Inc.
 

What's hot (20)

Onnx and onnx runtime
Onnx and onnx runtimeOnnx and onnx runtime
Onnx and onnx runtime
 
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
Continuous Delivery with Jenkins declarative pipeline XPDays-2018-12-08
 
Software archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and cultureSoftware archaeology for beginners: code, community and culture
Software archaeology for beginners: code, community and culture
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the Trenches
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android apps
 
Why You Should be Using Multi-stage Docker Builds in 2019
Why You Should be Using Multi-stage Docker Builds in 2019Why You Should be Using Multi-stage Docker Builds in 2019
Why You Should be Using Multi-stage Docker Builds in 2019
 
Magento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HRMagento Continuous Integration & Continuous Delivery @MM17HR
Magento Continuous Integration & Continuous Delivery @MM17HR
 
Continuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVzContinuous integration & Continuous Delivery @DeVz
Continuous integration & Continuous Delivery @DeVz
 
Docker for fun and profit!
Docker for fun and profit!Docker for fun and profit!
Docker for fun and profit!
 
mpandya_poster
mpandya_postermpandya_poster
mpandya_poster
 
Cleaner Code Through Test-Driven Development
Cleaner Code Through Test-Driven DevelopmentCleaner Code Through Test-Driven Development
Cleaner Code Through Test-Driven Development
 
DevOps in realtime
DevOps in realtimeDevOps in realtime
DevOps in realtime
 
Kotlin Multiplatfom In Action
Kotlin Multiplatfom In ActionKotlin Multiplatfom In Action
Kotlin Multiplatfom In Action
 
Kotlin Multiplatfom In Action
Kotlin Multiplatfom In ActionKotlin Multiplatfom In Action
Kotlin Multiplatfom In Action
 
Building CI/CD Pipelines for Kubernetes
Building CI/CD Pipelines for KubernetesBuilding CI/CD Pipelines for Kubernetes
Building CI/CD Pipelines for Kubernetes
 
Docker
DockerDocker
Docker
 
Up & Running with Docker
Up & Running with DockerUp & Running with Docker
Up & Running with Docker
 
CD NYC From Source Code to Production
CD NYC From Source Code to ProductionCD NYC From Source Code to Production
CD NYC From Source Code to Production
 
Deploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and KubernetesDeploying Windows Containers with Draft, Helm and Kubernetes
Deploying Windows Containers with Draft, Helm and Kubernetes
 
The Beam Vision for Portability: "Write once run anywhere"
The Beam Vision for Portability: "Write once run anywhere"The Beam Vision for Portability: "Write once run anywhere"
The Beam Vision for Portability: "Write once run anywhere"
 

Similar to An Introduction to Docker

A curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & KubernetesA curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & Kubernetes
zekeLabs Technologies
 
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Demi Ben-Ari
 
Getting started with docker
Getting started with dockerGetting started with docker
Getting started with docker
JEMLI Fathi
 
Docker for dev
Docker for devDocker for dev
Docker for dev
Erik Talboom
 
Azure ai on premises with docker
Azure ai on premises with  dockerAzure ai on premises with  docker
Azure ai on premises with docker
Vishwas N
 
Intro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live DemoIntro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live Demo
MongoDB
 
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
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
Jordan Open Source Association
 
Journey to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshiftJourney to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshift
Yusuf Hadiwinata Sutandar
 
Why to docker
Why to dockerWhy to docker
Why to docker
Karthik Gaekwad
 
Docker in Production at the Aurora Team
Docker in Production at the Aurora TeamDocker in Production at the Aurora Team
Docker in Production at the Aurora Team
Haufe-Lexware GmbH & Co KG
 
Getting started with docker (2017)
Getting started with docker (2017)Getting started with docker (2017)
Getting started with docker (2017)
JEMLI Fathi
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
Sakari Hoisko
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
Alex Vranceanu
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to Containers
Dharmit Shah
 
Container Landscape in 2019
Container Landscape in 2019Container Landscape in 2019
Container Landscape in 2019
Anusha Ragunathan
 
Docker up and Running For Web Developers
Docker up and Running For Web DevelopersDocker up and Running For Web Developers
Docker up and Running For Web Developers
BADR
 
Docker Up and Running for Web Developers
Docker Up and Running for Web DevelopersDocker Up and Running for Web Developers
Docker Up and Running for Web Developers
Amr Fawzy
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
Dr Ganesh Iyer
 
Docker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container worldDocker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container world
zekeLabs Technologies
 

Similar to An Introduction to Docker (20)

A curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & KubernetesA curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & Kubernetes
 
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
 
Getting started with docker
Getting started with dockerGetting started with docker
Getting started with docker
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
Azure ai on premises with docker
Azure ai on premises with  dockerAzure ai on premises with  docker
Azure ai on premises with docker
 
Intro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live DemoIntro to OpenShift, MongoDB Atlas & Live Demo
Intro to OpenShift, MongoDB Atlas & Live Demo
 
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...
 
JOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in ProductionJOSA TechTalks - Docker in Production
JOSA TechTalks - Docker in Production
 
Journey to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshiftJourney to the devops automation with docker kubernetes and openshift
Journey to the devops automation with docker kubernetes and openshift
 
Why to docker
Why to dockerWhy to docker
Why to docker
 
Docker in Production at the Aurora Team
Docker in Production at the Aurora TeamDocker in Production at the Aurora Team
Docker in Production at the Aurora Team
 
Getting started with docker (2017)
Getting started with docker (2017)Getting started with docker (2017)
Getting started with docker (2017)
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to Containers
 
Container Landscape in 2019
Container Landscape in 2019Container Landscape in 2019
Container Landscape in 2019
 
Docker up and Running For Web Developers
Docker up and Running For Web DevelopersDocker up and Running For Web Developers
Docker up and Running For Web Developers
 
Docker Up and Running for Web Developers
Docker Up and Running for Web DevelopersDocker Up and Running for Web Developers
Docker Up and Running for Web Developers
 
Dockers and kubernetes
Dockers and kubernetesDockers and kubernetes
Dockers and kubernetes
 
Docker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container worldDocker - A curtain raiser to the Container world
Docker - A curtain raiser to the Container world
 

Recently uploaded

How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 

Recently uploaded (20)

How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 

An Introduction to Docker

  • 2. About Me Brayden Winterton ● Computer Science Major at BYU ● Head of BYU Production Services Development Team How I use docker: ● Development environments ● CI/CD pipeline ● Clustered Production Environments
  • 3. Survey ● Who here has heard of Docker? ● Who has used Docker before? ● Who uses Docker as part of their daily workflow?
  • 5. In simpler times.. Server Host OS Lamp Stack LAMP Bins/Libs
  • 8. We’ve seen this before….
  • 10. Docker: a container for applications
  • 11.
  • 12. Docker fixes the Matrix from Hell!
  • 13. What is Docker? Docker Engine: ● CLI ● Docker Daemon ● Runs the containers Docker Hub: ● Sharing applications/containers ● Used in automating workflows ● Much like Github
  • 14. Why?
  • 15. Why developers love it: ● Devs can build apps using any language and toolchain ● Build once, run anywhere ● Docker creates a clean portable runtime for the app ● No more worries about missing dependencies ● Peace of mind knowing that apps will not conflict (nor will their dependencies) ● Compatibility concerns go out the window ● Automated testing, building, packaging, etc becomes much more simple. ● Fast, lightweight runtime environments
  • 16. Why sysadmins love it: ● Standardized, repeatable environments ● No more “works on my machine” ● Abstract application from OS and Infrastructure ● Flexibility in where to run the application ● Deployment driven by business priorities ● Rapid scale-up and scale-down to respond to load ● Eliminate inconsistencies between environments ● Increase reliability and speed of CI/CD systems ● TL;DR: Deploy any app, to any infrastructure
  • 17. Want to separate concerns? Development: ● Worries about what’s inside the container: o Code o Libraries o Data o Applications ● Assumes that all environments look the same Operations: ● Worries about what’s outside the container: o Logging o Monitoring o Configurations ● All containers start, stop, reload, and accept configuration the same way
  • 18. Want to combine concerns? ● Give developers access to existing resources ● Allow developers to deploy built containers to infrastructure o Either using Continuous Deployment or a standardized method ● Make the developers wake up in the middle of the night to fix it
  • 19. Isn’t this like using a VM?
  • 20. Why are containers lighter?
  • 22. Running a real application in a container, and port management Ok that was cute, lets see a real example
  • 26. Getting multiple containers to work together Orchestration
  • 28. Brayden Winterton ● Twitter: @braydenw ● Email: bwinterton@gmail.com ● Github: bwinterton

Editor's Notes

  1. Mange everything from Legacy applications and monolithic stacks to applications that are in development and microservice oriented architectures
  2. What is this thing that everyone keeps talking about?
  3. Once upon a time we had simple lamp stacks, web applications were extremely simple Typically one server, or one server image replicated for load balancing. Sometimes databases were even found on the same machines (Ugh)
  4. Today, with the movement to microservices and distributed services, stacks are much more complex (userDB, static stack, frontend, api, etc.) Not only are the stacks more complex, they need to be run on more diverse hardware. Dev environments Production environments QA On premise (woo, that’s hard) etc.
  5. This all leads to the Matrix from hell! Something we have all faced What runs where? Why doesn’t it run? What are it’s dependancies? Can the Static frontend and the Normal Frontend run together? This sucks. Tons of time to upkeep and to keep straight. Changes over time and as development iterates
  6. We have had this same problem before, in the shipping world How can we ship Item X? What methods of shipping will work? Which ones will damage the goods? What is the cheapest?
  7. The solution? Shipping containers! A standard container that everyone agrees on using and supporting. Loaded and then sealed. It can be transfered between shipping methods without causing an issue. Isolates the goods from other things next to it.
  8. Docker does for the application /devops world, what the shipping container did for the shipping world. The application/stack is packed into the container. That container can be run on any hardware platform without concerns for how it will interact with nearby applications or dependencies.
  9. So now our matrix from hell looks like this! Doesn’t matter what is run where, docker ensures that it will run.
  10. Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consists of two parts: Docker engine This is what actually runs the containers/applications used to build containers and modify existing ones runs in the command line uses namespaces, cgroups, and unionfilesystems to isolate containers. Docker hub: Like github for docker containers build off of existing containers grab generic containers to be used in your stack (such as mysql, postgress, graphite with statsd, etc)
  11. Ok so this is cool and all….. but Why should I use docker?
  12. The reasons that developers love docker are endless Let developers code their applications in whatever language using whatever toolchain they want (stack doesn’t matter) apps are built once, and they will run on any environment. dev, local machine, vms, bare metal, production, qa, etc (granted that they have the 3.2+ kernel or 2,6,32+ on RHEL) developers can know with 100% assurance what is inside their container, no surprises developers dont’ have to worry about ops missing a dependency during deployment, it comes built in to the container. Developers can rest assured that their apps will be completely isolated from everything around them, and that conflicting dependencies will not be an issue OS, kernel version, libraries, etc are no longer a concern for the developer, again everything is packed in. Testing, building, packaging is much more simple knowing that the application is portable and functioning, automation is much more simple, anything you can script, you can automate. runtimes(containers) are fast and lightweight. Startup times are in the seconds, not minutes.
  13. There are also a million reasons that sysadmins / ops loves docker: Finally! Standard repeatable environments for everyone, qa, dev, testing, etc. across all teams (don’t need to keep the same environment for all groups) Developers may not love it, but it gets rid of one of the age old go to excuses. If it works anywhere, it works everywhere. Abstract your application from your OS and infrastructure, make is self-dependant. (change around infrastructure and os as much as you like This allows for flexibility in where to run the application. Bare metal, public cloud, private cloud, etc. deployment no longer needs to be restricted by limitations of the infrastructure. Let business needs drive your deployments containers are so lightweight and start up so fast that scaling to load becomes extremely easy and fast get rid of the issues of updated or changed dependencies between environments. (works stage, but fails in prod due to library version) Increase the speed and reliability of your CI/CD systems, build the image and then run all tests and deployments using the already created image, image does not vary between steps tl;dr
  14. Looking to separate operations and development concerns? Docker helps out a ton! Developers only have to worry about the inside of the containers Operations worries about outside only overlap happens with configuration, make sure ops and dev agree on a standard configuration management (env variables, key/value store such as etcd, etc.)
  15. Looking to merge your team to a devops format? Merge the concerns by allowing your development team to deploy automagically Allow developers to deploy when their containers are built If it works for the developer, it should work in production Almost all issues found can be resolved by the developer updating the container and re deploying very minimal ops intervention in the process and in fixes ops can focus on creating ci/cd pipelines and providing deployment methods to the development team. no more ops deployment headaches.
  16. You may be thinking, wait this sounds alot like why we use vms! To separate and isolate applications. The difference is: we get rid of the bloat from repeated Guest OS’s and from repeated bins/libs!
  17. Why is it that these containers are lighter than vms? First of all, we loose the repeated load of having a guest OS and all of the pieces that make that up Another huge aspect of docker is the layered filesystem! Each change to the filesystem creates a new cached layer. Cached layers can be used across multiple copies of the container. This allows for fast startup times Modifications only adds a new layer to the filesystem .
  18. Ok so many of you may be asking “Ok so how do I use this marvelous technology?” Lets take a look. First we are going to start with a basic example. A simple hello world example! docker run -it ubuntu /bin/echo “Hello World!” the container spun up, and then ran the echo command with “Hello World!” Don’t believe that it was the container? docker run ubuntu /usr/bin/dpkg --get-selections | wc -l dpkg --get-selections | wc -l Different number of packages! different systems! Ok, so let’s say I don’t want it to take over my terminal! What now? docker run -d ubuntu /bin/echo "Hello World!" *WAIT! what was that big number printed out? * We daemonized the process (forked it to the background) the number returned is the container hash number we can use just the first few characters. Just like git. Lets check the logs. docker logs (container number) see? We can see that the container did actually start and run the command we gave it!
  19. Ok so let’s be honest, the “hello world” example was cute but probably not very helpful. Who ever runs hello world in production? Lets see something real! How about running a static frontend through a container? Lets use nginx! docker run -d nginx docker ps no need to give nginx a command, it has a default one built into the container. we can see the nginx container is running! But how do we get to it? The ports haven’t been mapped! Let’s map those ports! docker kill (container) docker run -d -p 8000:80 nginx go to localhost:8000 to get the welcome nginx page! Woot! we have nginx running now! docker allows us to map ports which the container has exposed to ports on the host. the syntax is -p hostPort:containerPort
  20. So that’s great and all, we have docker running nginx now. But what if we want to change the content that nginx is displaying? The containers we have seen up to now have been completely isolated from the host machine’s filesystem. But there is a way to make a filesystem visible to the container. Volumes! docker run -d -p 8000:80 -v /home/bcwinter/dev/dockerDemo:/usr/share/nginx/html nginx vim index.html (add new <h2>And hello to you!</h2>) Volumes create persistent connections between the container’s filesystem and the host’s filesystem volumes can also be shared between containers (ie container A can have a volume from container B)
  21. Now what if we wanted to load our code into the container? So that it wasn’t needed on the host machine through a volume? Well, we can modify the image in two ways. Interactively, or through a dockerfile. First let’s try this interactively. docker run -it nginx /bin/bash echo "<html><body><h1>Hello World</h1></body></html>" > /usr/share/nginx/html/index.html exit docker ps -l docker commit -m="Edited the index.html" -a="Brayden Winterton" (containerid) bcwinter/nginx:v2 docker run -d -p 8000:80 bcwinter/nginx:v2 nginx -g ‘daemon off;’ docker kill So that is interactively, when you open a container interatively, you open a writeable layer that layer can be changed and then commited, just like git some downsides, not repeatable, several commands, can loose your “entrypoint” command but there is a nicer, easier, more repeatable way, docker files! cd ~/dev/dockerDemo vim index.html vim Dockerfile docker build -t bcwinter/nginx:v3 . docker run -d -p 8000:80 bcwinter/nginx:v3 localhost:8000 It works! The process is repeatable Also due to the cached file system. Subsequent builds only rewrite layers that have changed. Show a more complex dockerfile vim exampleFile Subsequent builds would only rebuild the add layers if the files had changed, other layers will not be rebuilt as they are cached Docker files are the way to go, especially for CI/CD workflows.
  22. Now as we talked about before, most of our stacks today are no longer just a simple LAMP stack, they consist of several moving parts. What if we wanted to link a database container and a frontend container for example? Docker makes this possible with links! Linking containers injects environment variables into the container as well as updating /etc/hosts for proper redirection of requests. as well as environment variables! for example: docker run --name postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres docker run --link postgres:db ubuntu cat /etc/hosts docker run --link postgres:db ubuntu env as you can see! docker created an entry fo the host and created the necessary env variables. This allows for configuration to be statically set and not have to be coded into the application. If the applicatoin requests something from the url ‘db’ it is always going to get the db, no matter where it is. These assumptions help to make the application portable and lightweight.
  23. Orchestrations is a big name in the game of docker. There are many solutions out there Kubernetes Mesosphere Flynn Deis Shipyard etc. One of the most simplistic to start out with and my favorite for single host deployments is fig. Fig is simple yet powerful. Great at dependency management, and great for managing several containers at once. This is how I run my development environments. fig example show dockerfile show fig.yaml fig up fig web env fig stop fig is a great start to learning how to orchestrate several containers.