SlideShare a Scribd company logo
1 of 30
Docker
For fun and profit.
What problem are we solving?
Hosting web apps is (increasingly) difficult
What is so difficult about hosting web apps?
● No web app is an island.
● We have a LOT of them now
● We want/need/expect to be able to run them in different
environments
● New technologies bring new requirements and
dependencies
We’re going to need more machines!!!
Apps and Machines
A love story?!
In the beginning...
We setup a server, configured it, and
copied our web app code to it.
Done!
But then… we had to scale
We moved the database to a separate
machine.
We added more machines and
introduced load balancing
Rinse and repeat.
There’s got to be a better way...
Virtual Machines!
Introduction of abstraction layer
between hardware and “machine”
(OS)
Mo machines mo problems
We still have to deal with hardware
● Hardware fails
● Hardware become obsolete
● Hardware is expensive. Buying for peak traffic.
We now have lots of VMs to maintain (patch,
upgrade, backup, etc)
To the cloud!!!
Dear Azure/AWS,
Please take care of the hardware for me.
XOXO
- Dev and Ops
Hooray! Now we can focus on what matters…
Virtual Machines and putting apps on them.
Mo VMs mo VM problems
With a taste of freedom from hardware constraints,
we get greedy….
Each web app should run in it’s own VM… per
environment
● Production (of course)
● Development
● On-Demand/Dynamic for feature branches
There’s got to be a better way...
Containers! (docker)
Abstraction layer between VM and Application
Decouples web apps (and their dependencies)
from the host (VM) machine
The SAME code runs everywhere
More efficient usage of resources ($!!!)
Docker 101
Core Systems and Components
Docker. It's kinda like… tiny VMs
Docker. It's kinda like… Nuget
Images (Packages)
Public and Private Repositories
Push and Pull commands
Docker. It's kinda like… Git
Delta, Hashes and Layers
● Base Images contain the OS/Kernel
● New Images sit on top of base or parent
images and add/alter/delete features
○ Base Image ~ Master Branch
○ Image ~ Feature Branch with additional
commits.
● Layers/Images cached on hosts
Docker. It reminds me of… MP3s!?
Decouples application from VM and the VMs OS
It’s a standard. All containers must honor a docker contract so that they all work
the same way.
Small, portable, self-contained… this is a big deal.
Who is Docker?
Docker is a company that has open sourced the Docker container type and related
components. They make $ on support and premium services.
Supporters:
● Microsoft
● Google
● Amazon
● etc.
What is a Docker Image?
Summary
● An image is a lightweight, stand-alone, executable package of a piece of software.
● It includes everything needed to run it: code, runtime, system tools, system libraries, settings.
Where are Images stored?
● On public and/or private repos. The default repo is DockerHub.com.
● On any host machine that has pulled the package down from a repo.
● Images are designed to be composed of layers of other images. Thus, each layer is stored and
cached separately.
How do I make a custom Image?
Dockerfile
FROM microsoft/aspnet:4.7.1-windowsservercore-1709
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN Set-ExecutionPolicy Bypass -Scope Process -Force;
RUN Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'));
PS> docker.exe build --rm --tag allrecipes/aspnet-choco:4.7.1 --file dockerfile .
Commit an existing container
What is a Container?
To use a programming metaphor, if an image is a class, then a container is an
instance of a class. It’s a runtime object.
Where can I run containers?
● Windows 10, Windows Server 2016, macOS, Linux, Cloud…
● OS constraint
How do I run a container?
docker.exe run --name allrecipes/aspnet-choco:4.7.1 --it powershell
How do I compose a system of Containers?
Docker-compose
● YML file that specifies containers to include, their config, and
interdependencies
● Examples
How do I scale a system of Containers?
Welcome to Container Orchestration. Scale containers across multiple host (VM)
machines.
● Docker Swarm
● Kubernetes - Winner.
○ Again YML config file.
○ Scheduling
○ Secret management
○ Load balancing
○ Deployment strategies
Docker 101 - Recap
Images
● Created using Dockerfile
● Stored as a series of layers
● Stored in public and private repos
Container
● Instance of Image. Runtime object
● Transient in nature
Composition
● Config via .yml files
● Executes via Docker-Compose.exe
● Containers run on one host
Orchestration
● Kubernetes
● Scheduling, load-balancing, secrets
management
● Containers run in a cluster
Okay, Docker
Show me what ya got …
Docker : Local Development
Requirements
● Windows 10 (Fall Creators Update) aka: v1709
● Docker for Windows - Windows and Linux containers and K8s
○ Beware: Fun with Macbook Pros
Tooling
● Visual Studio Code
● Visual Studio 2017
○ MembershipService demo
Docker : Discovery
Tech Evaluation and POC’ing
● Pre-configured, ready to run, applications in seconds
○ docker pull docker.bintray.io/jfrog/artifactory-oss:latest
○ docker run -p 8080:8080 jenkinsci/blueocean
○ docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase
○ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
docker.elastic.co/elasticsearch/elasticsearch:6.2.2
Docker and CI/CD Pipelines
Most major CI/CD software now supports Docker.
● VSTS, TeamCity, Jenkins
There are new CI/CD players that are “Docker First”
● CodeFresh, CodeShip, etc
...
“The Only Thing That Is Constant Is Change” ― Heraclitus
TeamCity… the future is NOW!
Note: The future is now (as of Feb 27th)
● Any command can be run within any docker image.
○ Without a single line of code being changed
○ Docker Image acts as the Build Agent … running… on… a Build Agent. I know.
● Dockerfile
○ Let’s get Dockerized!!! SearchService: Dockerfile
● Docker-Compose
○ The stuff of dreams… we’ll get there.
Docker : Production
The state of things:
● Windows Support lags behind Linux. *cough* dotnetcore *cough*
● Cloud Wars! Azure, AWS, and Google Cloud are fighting for business
○ Things are quickly getting better/easier
○ Managed Kubernetes is the current battle ground. AWS taking it one step further.
● Current Options:
○ AWS Elastic Container Service (ECS) or Azure Container Service (AKS)
■ Proprietary container orchestration
● The Dream
○ Managed Kubernetes in the cloud
It’s over! Questions?
Slack #dev-docker

More Related Content

What's hot

Docker workshop
Docker workshopDocker workshop
Docker workshopEvans Ye
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
Rapid Development With Docker Compose
Rapid Development With Docker ComposeRapid Development With Docker Compose
Rapid Development With Docker ComposeJustin Crown
 
Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)Quan Nguyen
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Binary Studio
 
Adventures in docker compose
Adventures in docker composeAdventures in docker compose
Adventures in docker composeLinkMe Srl
 
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...OpenNebula Project
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in developmentAdam Culp
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Nicolas Poggi
 
Cassandra and docker
Cassandra and dockerCassandra and docker
Cassandra and dockerBen Bromhead
 
Ironic - A modern approach to machine deployment
Ironic - A modern approach to machine deploymentIronic - A modern approach to machine deployment
Ironic - A modern approach to machine deploymentDevananda Van Der Veen
 
Azure container service docker-ha noi com
Azure container service   docker-ha noi comAzure container service   docker-ha noi com
Azure container service docker-ha noi comVan Phuc
 
Docker Introductory workshop
Docker Introductory workshopDocker Introductory workshop
Docker Introductory workshopRuncy Oommen
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionJérôme Petazzoni
 

What's hot (20)

Docker presentation
Docker presentationDocker presentation
Docker presentation
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Rapid Development With Docker Compose
Rapid Development With Docker ComposeRapid Development With Docker Compose
Rapid Development With Docker Compose
 
Vagrant + Docker
Vagrant + DockerVagrant + Docker
Vagrant + Docker
 
Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2
 
Adventures in docker compose
Adventures in docker composeAdventures in docker compose
Adventures in docker compose
 
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...
OpenNebulaConf 2016 - ONEDock: Docker as a hypervisor in ONE by Carlos de Alf...
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
 
The state of the swarm
The state of the swarmThe state of the swarm
The state of the swarm
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
 
Cassandra and docker
Cassandra and dockerCassandra and docker
Cassandra and docker
 
Docker by Example - Quiz
Docker by Example - QuizDocker by Example - Quiz
Docker by Example - Quiz
 
Ironic - A modern approach to machine deployment
Ironic - A modern approach to machine deploymentIronic - A modern approach to machine deployment
Ironic - A modern approach to machine deployment
 
Docker / Ansible
Docker / AnsibleDocker / Ansible
Docker / Ansible
 
Azure container service docker-ha noi com
Azure container service   docker-ha noi comAzure container service   docker-ha noi com
Azure container service docker-ha noi com
 
Docker Introductory workshop
Docker Introductory workshopDocker Introductory workshop
Docker Introductory workshop
 
Introduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" EditionIntroduction to Docker, December 2014 "Tour de France" Edition
Introduction to Docker, December 2014 "Tour de France" Edition
 

Similar to Docker 101

Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioJérôme Petazzoni
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with DockerAndrey Hristov
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with DockerAndrey Hristov
 
Docker for Professionals: The Practical Guide
Docker for Professionals: The Practical GuideDocker for Professionals: The Practical Guide
Docker for Professionals: The Practical GuidePaddy Lock
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014Carlo Bonamico
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...Codemotion
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsMichael Lange
 
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.
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tipsSamuel Chow
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessDocker-Hanoi
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Partner S.A.
 
Docker introduction
Docker introductionDocker introduction
Docker introductionJo Ee Liew
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET DevelopersTaswar Bhatti
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 applicationRoman Rodomansky
 
Docker and the Container Revolution
Docker and the Container RevolutionDocker and the Container Revolution
Docker and the Container RevolutionRomain Dorgueil
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniTheFamily
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline Docker, Inc.
 

Similar to Docker 101 (20)

Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
Docker intro
Docker introDocker intro
Docker intro
 
Docker Ecosystem on Azure
Docker Ecosystem on AzureDocker Ecosystem on Azure
Docker Ecosystem on Azure
 
Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
 
Docker for Professionals: The Practical Guide
Docker for Professionals: The Practical GuideDocker for Professionals: The Practical Guide
Docker for Professionals: The Practical Guide
 
Docker In Brief
Docker In BriefDocker In Brief
Docker In Brief
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
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
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Agile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: IntroductionAgile Brown Bag - Vagrant & Docker: Introduction
Agile Brown Bag - Vagrant & Docker: Introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker for .NET Developers
Docker for .NET DevelopersDocker for .NET Developers
Docker for .NET Developers
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Docker and the Container Revolution
Docker and the Container RevolutionDocker and the Container Revolution
Docker and the Container Revolution
 
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme PetazzoniWorkshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
Workshop : 45 minutes pour comprendre Docker avec Jérôme Petazzoni
 
DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline  DCSF 19 Building Your Development Pipeline
DCSF 19 Building Your Development Pipeline
 

Recently uploaded

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
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
 
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
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

Docker 101

  • 2. What problem are we solving? Hosting web apps is (increasingly) difficult
  • 3. What is so difficult about hosting web apps? ● No web app is an island. ● We have a LOT of them now ● We want/need/expect to be able to run them in different environments ● New technologies bring new requirements and dependencies We’re going to need more machines!!!
  • 4. Apps and Machines A love story?!
  • 5. In the beginning... We setup a server, configured it, and copied our web app code to it. Done!
  • 6. But then… we had to scale We moved the database to a separate machine. We added more machines and introduced load balancing Rinse and repeat.
  • 7. There’s got to be a better way... Virtual Machines! Introduction of abstraction layer between hardware and “machine” (OS)
  • 8. Mo machines mo problems We still have to deal with hardware ● Hardware fails ● Hardware become obsolete ● Hardware is expensive. Buying for peak traffic. We now have lots of VMs to maintain (patch, upgrade, backup, etc)
  • 9. To the cloud!!! Dear Azure/AWS, Please take care of the hardware for me. XOXO - Dev and Ops Hooray! Now we can focus on what matters… Virtual Machines and putting apps on them.
  • 10. Mo VMs mo VM problems With a taste of freedom from hardware constraints, we get greedy…. Each web app should run in it’s own VM… per environment ● Production (of course) ● Development ● On-Demand/Dynamic for feature branches
  • 11. There’s got to be a better way... Containers! (docker) Abstraction layer between VM and Application Decouples web apps (and their dependencies) from the host (VM) machine The SAME code runs everywhere More efficient usage of resources ($!!!)
  • 12. Docker 101 Core Systems and Components
  • 13. Docker. It's kinda like… tiny VMs
  • 14. Docker. It's kinda like… Nuget Images (Packages) Public and Private Repositories Push and Pull commands
  • 15. Docker. It's kinda like… Git Delta, Hashes and Layers ● Base Images contain the OS/Kernel ● New Images sit on top of base or parent images and add/alter/delete features ○ Base Image ~ Master Branch ○ Image ~ Feature Branch with additional commits. ● Layers/Images cached on hosts
  • 16. Docker. It reminds me of… MP3s!? Decouples application from VM and the VMs OS It’s a standard. All containers must honor a docker contract so that they all work the same way. Small, portable, self-contained… this is a big deal.
  • 17. Who is Docker? Docker is a company that has open sourced the Docker container type and related components. They make $ on support and premium services. Supporters: ● Microsoft ● Google ● Amazon ● etc.
  • 18. What is a Docker Image? Summary ● An image is a lightweight, stand-alone, executable package of a piece of software. ● It includes everything needed to run it: code, runtime, system tools, system libraries, settings. Where are Images stored? ● On public and/or private repos. The default repo is DockerHub.com. ● On any host machine that has pulled the package down from a repo. ● Images are designed to be composed of layers of other images. Thus, each layer is stored and cached separately.
  • 19. How do I make a custom Image? Dockerfile FROM microsoft/aspnet:4.7.1-windowsservercore-1709 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] RUN Set-ExecutionPolicy Bypass -Scope Process -Force; RUN Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); PS> docker.exe build --rm --tag allrecipes/aspnet-choco:4.7.1 --file dockerfile . Commit an existing container
  • 20. What is a Container? To use a programming metaphor, if an image is a class, then a container is an instance of a class. It’s a runtime object. Where can I run containers? ● Windows 10, Windows Server 2016, macOS, Linux, Cloud… ● OS constraint How do I run a container? docker.exe run --name allrecipes/aspnet-choco:4.7.1 --it powershell
  • 21. How do I compose a system of Containers? Docker-compose ● YML file that specifies containers to include, their config, and interdependencies ● Examples
  • 22. How do I scale a system of Containers? Welcome to Container Orchestration. Scale containers across multiple host (VM) machines. ● Docker Swarm ● Kubernetes - Winner. ○ Again YML config file. ○ Scheduling ○ Secret management ○ Load balancing ○ Deployment strategies
  • 23. Docker 101 - Recap Images ● Created using Dockerfile ● Stored as a series of layers ● Stored in public and private repos Container ● Instance of Image. Runtime object ● Transient in nature Composition ● Config via .yml files ● Executes via Docker-Compose.exe ● Containers run on one host Orchestration ● Kubernetes ● Scheduling, load-balancing, secrets management ● Containers run in a cluster
  • 24. Okay, Docker Show me what ya got …
  • 25. Docker : Local Development Requirements ● Windows 10 (Fall Creators Update) aka: v1709 ● Docker for Windows - Windows and Linux containers and K8s ○ Beware: Fun with Macbook Pros Tooling ● Visual Studio Code ● Visual Studio 2017 ○ MembershipService demo
  • 26. Docker : Discovery Tech Evaluation and POC’ing ● Pre-configured, ready to run, applications in seconds ○ docker pull docker.bintray.io/jfrog/artifactory-oss:latest ○ docker run -p 8080:8080 jenkinsci/blueocean ○ docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase ○ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.2
  • 27. Docker and CI/CD Pipelines Most major CI/CD software now supports Docker. ● VSTS, TeamCity, Jenkins There are new CI/CD players that are “Docker First” ● CodeFresh, CodeShip, etc ... “The Only Thing That Is Constant Is Change” ― Heraclitus
  • 28. TeamCity… the future is NOW! Note: The future is now (as of Feb 27th) ● Any command can be run within any docker image. ○ Without a single line of code being changed ○ Docker Image acts as the Build Agent … running… on… a Build Agent. I know. ● Dockerfile ○ Let’s get Dockerized!!! SearchService: Dockerfile ● Docker-Compose ○ The stuff of dreams… we’ll get there.
  • 29. Docker : Production The state of things: ● Windows Support lags behind Linux. *cough* dotnetcore *cough* ● Cloud Wars! Azure, AWS, and Google Cloud are fighting for business ○ Things are quickly getting better/easier ○ Managed Kubernetes is the current battle ground. AWS taking it one step further. ● Current Options: ○ AWS Elastic Container Service (ECS) or Azure Container Service (AKS) ■ Proprietary container orchestration ● The Dream ○ Managed Kubernetes in the cloud

Editor's Notes

  1. They’re part of systems Setup, maintenance, legacy support Configuration management