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

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
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
 
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
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
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
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 

Recently uploaded (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
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 ...
 
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
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
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
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 

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