SlideShare a Scribd company logo
Docker containers
The big picture
Brave new world
UI
Business logic
Data access
• Monoliths, our traditional approach in
enterprise software
• A black hole of technical debt
• Layered
• Regression
• Rigid
• Zero reusability
I can go on, you get the gist…
Nice try, but…
Software development methodologies
Project management techniques
They all have failed.
However an engineering approach
emerged
scrum
crystal
xp
lean
adaptive
pragmatic
dsdm
Microservices &
Containers are becoming
mainstream
• Emerging engineering approach
• The closest thing yet to ideal
software components
• Small, self-contained, critical-
mission web components
• Independently deployable
Picture from: https://www.nginx.com/resources/library/app-dev-survey/
Go to market needs
• We want to avoid deployment errors
• We need a way to develop faster
• We need a way to scale up our applications
efficiently
• We need rapid & continuous releases
• REUSABILITY
Picture from: https://www.nginx.com/resources/library/app-dev-survey/
What’s a container?
Containers
• Standard unit of software deployment
• Contains different code and dependencies
• Each container can run an entire application
• Container image is instantiated to run as a
process, serving the application
• Think of this analogy: Class vs object.
• Offers
• Isolation
• Portability
• Agility
• Scalability
A container does one thing and it does it in one process
Container principle
What’s Docker?
Most popular container technology
According to google trends:
Super popular
Steadily increasing (currently on peak)
Docker
• Lightweight container engine
• Similar to aVM – can host apps & services
• Supports Linux, CoreOS &Windows
• Linux being the most popular
• WindowsNano
Value for business
*According to https://www.docker.com/why-docker
Docker vsVMs
• Far fewer resources
• Easy to deploy
• Fast start
• Higher density  More services in one h/w unit
• Less cost
• Same across deployments
• Can go anywhere
• OS is virtualized instead h/w
https://docs.microsoft.com/en-us/dotnet/standard/microservices-
architecture/container-docker-introduction/docker-defined
“
”
It works on my machine
Developers’ favorite phrase
“It runs on Docker”
Terminology
And many more…
https://bit.ly/2rmKoLg
• Registry
• Service that provides access to a collection or
related Docker images.
• Orchestrator
• Tool that simplifies management of clusters
and Docker hosts, like Kubernetes
• Images
• Package with all dependencies needed to
create a container.
• Containers
• Instance of a Docker image.
Docker containers, images & registry
https://docs.microsoft.com/en-us/dotnet/standard/microservices-
architecture/container-docker-introduction/docker-containers-images-registries
Benefits
• One environment for the application to run
• No more asking how it works in local or SIT and not in PROD
• Easier to run containerized apps locally
• Easier to test applications & run integration tests
• Easier to use dependencies – Just use a Docker Image
• Redis, SQL Server, Neo4J, Mongo…
• External services
Dockerfile
• docker build
• Reads a Dockerfile
• Creates a new image
• Multi-stage build
• Cleaner approach, smaller image
size
• ENTRYPOINT sets the
commands that run when the
container first runs.
Build image & run
• docker build –t eshop/orders.api:latest –f Orders.API/Dockerfile .
• Builds the image
• docker run -d –p 8080:80 eshop/orders.api:latest
• Runs the container on port 8080, mapping from port 80 inside the container
• Runs a single container
• What about multi-container applications?
• docker-compose up
• Ideal for development environments
Containerize applications inVisual Studio
• Recommended to useVisual Studio to
containerize applications when starting with
Docker
• Creates Dockerfiles
• Creates Docker Compose files & overrides
• Creates ignore files
• Easy to Debug – Just F5
• Multiple applications start & debug with
Docker Compose
Development workflow
https://docs.microsoft.com/en-us/dotnet/standard/microservices-
architecture/docker-application-development-process/docker-app-
development-workflow
.NET Core & Containers
• Cross-platform
• Can target different OS compared to .NET Framework which requires Windows only
• Microservices
• .NET Core fits best the containers philosophy
• Lightweight compared to .NET Framework
• Container is lightweight also – Linux container size <Windows container size
Operating systems for
.NET Core apps
Docker can implicitly understand the
target OS and download the
appropriate container (Linux or
Windows)
https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/net-core-net-framework-
containers/net-container-os-targets
Composing multi-
container applications
Resources
• https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/
• https://www.pluralsight.com/courses/docker-containers-big-picture
• https://www.pluralsight.com/courses/docker-getting-started
• https://www.packtpub.com/virtualization-and-cloud/microservices-development-
azure-java-video
• https://www.nginx.com/resources/library/app-dev-survey/
• https://www.docker.com/
Disclaimer: Diagram images used are taken from Microsoft’s guide on microservices
Questions?

More Related Content

What's hot

Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
Docker, Inc.
 
Structured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, AccentureStructured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, Accenture
Docker, Inc.
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Docker, Inc.
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
visual28
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
Gourav Varma
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
Lalit Kale
 
Container Patterns
Container PatternsContainer Patterns
Container Patterns
Matthias Luebken
 
What is Docker?
What is Docker?What is Docker?
What is Docker?
Shubhrank Rastogi
 
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
Docker, Inc.
 
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
 
2014, April 15, Atlanta Java Users Group
2014, April 15, Atlanta Java Users Group2014, April 15, Atlanta Java Users Group
2014, April 15, Atlanta Java Users Group
Todd Fritz
 
Docker - HieuHoang
Docker - HieuHoangDocker - HieuHoang
Docker - HieuHoang
Hieu Hoang
 
The Next Generation Cloud: Unleashing the Power of the Unikernal
The Next Generation Cloud: Unleashing the Power of the UnikernalThe Next Generation Cloud: Unleashing the Power of the Unikernal
The Next Generation Cloud: Unleashing the Power of the Unikernal
All Things Open
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
Karthik Gaekwad
 
DCSF 19 Modern Orchestrated IT for Enterprise CMS
DCSF 19  Modern Orchestrated IT for Enterprise CMSDCSF 19  Modern Orchestrated IT for Enterprise CMS
DCSF 19 Modern Orchestrated IT for Enterprise CMS
Docker, Inc.
 
DockerCon EU 2015: Official Repos and Project Nautilus
DockerCon EU 2015: Official Repos and Project NautilusDockerCon EU 2015: Official Repos and Project Nautilus
DockerCon EU 2015: Official Repos and Project Nautilus
Docker, Inc.
 
Building Big Architectures XP Conference 2016
Building Big Architectures XP Conference 2016Building Big Architectures XP Conference 2016
Building Big Architectures XP Conference 2016
Ramit Surana
 
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticAutomation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Hidora
 
DCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any InfrastructureDCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any Infrastructure
Docker, Inc.
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
Ajeet Singh Raina
 

What's hot (20)

Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
Digital Transformation with Docker, Cloud, and DevOps: How JCPenney Handles B...
 
Structured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, AccentureStructured Container Delivery by Oscar Renalias, Accenture
Structured Container Delivery by Oscar Renalias, Accenture
 
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Dot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentalsDot net platform and dotnet core fundamentals
Dot net platform and dotnet core fundamentals
 
Container Patterns
Container PatternsContainer Patterns
Container Patterns
 
What is Docker?
What is Docker?What is Docker?
What is Docker?
 
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
Building Your NoSQL Ship: How an Enterprise Transitioned from a RDBMS to NoSQ...
 
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
 
2014, April 15, Atlanta Java Users Group
2014, April 15, Atlanta Java Users Group2014, April 15, Atlanta Java Users Group
2014, April 15, Atlanta Java Users Group
 
Docker - HieuHoang
Docker - HieuHoangDocker - HieuHoang
Docker - HieuHoang
 
The Next Generation Cloud: Unleashing the Power of the Unikernal
The Next Generation Cloud: Unleashing the Power of the UnikernalThe Next Generation Cloud: Unleashing the Power of the Unikernal
The Next Generation Cloud: Unleashing the Power of the Unikernal
 
Containers and microservices for realists
Containers and microservices for realistsContainers and microservices for realists
Containers and microservices for realists
 
DCSF 19 Modern Orchestrated IT for Enterprise CMS
DCSF 19  Modern Orchestrated IT for Enterprise CMSDCSF 19  Modern Orchestrated IT for Enterprise CMS
DCSF 19 Modern Orchestrated IT for Enterprise CMS
 
DockerCon EU 2015: Official Repos and Project Nautilus
DockerCon EU 2015: Official Repos and Project NautilusDockerCon EU 2015: Official Repos and Project Nautilus
DockerCon EU 2015: Official Repos and Project Nautilus
 
Building Big Architectures XP Conference 2016
Building Big Architectures XP Conference 2016Building Big Architectures XP Conference 2016
Building Big Architectures XP Conference 2016
 
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - JelasticAutomation CI CD with Gitlab, Java, docker on Hidora - Jelastic
Automation CI CD with Gitlab, Java, docker on Hidora - Jelastic
 
DCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any InfrastructureDCSF 19 Microservices API: Routing Across Any Infrastructure
DCSF 19 Microservices API: Routing Across Any Infrastructure
 
Introduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker CaptainIntroduction to Docker Containers - Docker Captain
Introduction to Docker Containers - Docker Captain
 

Similar to Docker for developers - The big picture

Containers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciContainers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aci
Rajesh Kolla
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
Dave Ward
 
Dockerize the World
Dockerize the WorldDockerize the World
Dockerize the World
damovsky
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
Web à Québec
 
Dockerize the World - presentation from Hradec Kralove
Dockerize the World - presentation from Hradec KraloveDockerize the World - presentation from Hradec Kralove
Dockerize the World - presentation from Hradec Kralove
damovsky
 
Afrimadoni the power of docker
Afrimadoni   the power of dockerAfrimadoni   the power of docker
Afrimadoni the power of docker
PHP Indonesia
 
Week 8 lecture material
Week 8 lecture materialWeek 8 lecture material
Week 8 lecture material
Ankit Gupta
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
Oracle Developers
 
Why to docker
Why to dockerWhy to docker
Why to docker
Karthik Gaekwad
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
Karthik Gaekwad
 
Rails Applications with Docker
Rails Applications with DockerRails Applications with Docker
Rails Applications with Docker
Laura Frank Tacho
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
Peng Xiao
 
What is Docker and why is it so hot?
What is Docker and why is it so hot?What is Docker and why is it so hot?
What is Docker and why is it so hot?
Jochen Zehnder
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
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
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifei
dotCloud
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
Bangladesh Network Operators Group
 
Docker for dev
Docker for devDocker for dev
Docker for dev
Erik Talboom
 
Lightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in PracticeLightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in Practice
Docker, Inc.
 

Similar to Docker for developers - The big picture (20)

Containers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciContainers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aci
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Dockerize the World
Dockerize the WorldDockerize the World
Dockerize the World
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
Dockerize the World - presentation from Hradec Kralove
Dockerize the World - presentation from Hradec KraloveDockerize the World - presentation from Hradec Kralove
Dockerize the World - presentation from Hradec Kralove
 
Afrimadoni the power of docker
Afrimadoni   the power of dockerAfrimadoni   the power of docker
Afrimadoni the power of docker
 
Week 8 lecture material
Week 8 lecture materialWeek 8 lecture material
Week 8 lecture material
 
Containers and Microservices for Realists
Containers and Microservices for RealistsContainers and Microservices for Realists
Containers and Microservices for Realists
 
Why to docker
Why to dockerWhy to docker
Why to docker
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Rails Applications with Docker
Rails Applications with DockerRails Applications with Docker
Rails Applications with Docker
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
What is Docker and why is it so hot?
What is Docker and why is it so hot?What is Docker and why is it so hot?
What is Docker and why is it so hot?
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
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
 
Docker in pratice -chenyifei
Docker in pratice -chenyifeiDocker in pratice -chenyifei
Docker in pratice -chenyifei
 
Introduction to container based virtualization with docker
Introduction to container based virtualization with dockerIntroduction to container based virtualization with docker
Introduction to container based virtualization with docker
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
Lightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in PracticeLightweight Virtualization Docker in Practice
Lightweight Virtualization Docker in Practice
 

Recently uploaded

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 

Recently uploaded (20)

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 

Docker for developers - The big picture

  • 2. Brave new world UI Business logic Data access • Monoliths, our traditional approach in enterprise software • A black hole of technical debt • Layered • Regression • Rigid • Zero reusability I can go on, you get the gist…
  • 3. Nice try, but… Software development methodologies Project management techniques They all have failed. However an engineering approach emerged scrum crystal xp lean adaptive pragmatic dsdm
  • 4. Microservices & Containers are becoming mainstream • Emerging engineering approach • The closest thing yet to ideal software components • Small, self-contained, critical- mission web components • Independently deployable Picture from: https://www.nginx.com/resources/library/app-dev-survey/
  • 5. Go to market needs • We want to avoid deployment errors • We need a way to develop faster • We need a way to scale up our applications efficiently • We need rapid & continuous releases • REUSABILITY Picture from: https://www.nginx.com/resources/library/app-dev-survey/
  • 7.
  • 8. Containers • Standard unit of software deployment • Contains different code and dependencies • Each container can run an entire application • Container image is instantiated to run as a process, serving the application • Think of this analogy: Class vs object. • Offers • Isolation • Portability • Agility • Scalability
  • 9. A container does one thing and it does it in one process Container principle
  • 10. What’s Docker? Most popular container technology According to google trends: Super popular Steadily increasing (currently on peak)
  • 11. Docker • Lightweight container engine • Similar to aVM – can host apps & services • Supports Linux, CoreOS &Windows • Linux being the most popular • WindowsNano
  • 12. Value for business *According to https://www.docker.com/why-docker
  • 13. Docker vsVMs • Far fewer resources • Easy to deploy • Fast start • Higher density  More services in one h/w unit • Less cost • Same across deployments • Can go anywhere • OS is virtualized instead h/w https://docs.microsoft.com/en-us/dotnet/standard/microservices- architecture/container-docker-introduction/docker-defined
  • 14. “ ” It works on my machine Developers’ favorite phrase “It runs on Docker”
  • 15. Terminology And many more… https://bit.ly/2rmKoLg • Registry • Service that provides access to a collection or related Docker images. • Orchestrator • Tool that simplifies management of clusters and Docker hosts, like Kubernetes • Images • Package with all dependencies needed to create a container. • Containers • Instance of a Docker image.
  • 16. Docker containers, images & registry https://docs.microsoft.com/en-us/dotnet/standard/microservices- architecture/container-docker-introduction/docker-containers-images-registries
  • 17. Benefits • One environment for the application to run • No more asking how it works in local or SIT and not in PROD • Easier to run containerized apps locally • Easier to test applications & run integration tests • Easier to use dependencies – Just use a Docker Image • Redis, SQL Server, Neo4J, Mongo… • External services
  • 18. Dockerfile • docker build • Reads a Dockerfile • Creates a new image • Multi-stage build • Cleaner approach, smaller image size • ENTRYPOINT sets the commands that run when the container first runs.
  • 19. Build image & run • docker build –t eshop/orders.api:latest –f Orders.API/Dockerfile . • Builds the image • docker run -d –p 8080:80 eshop/orders.api:latest • Runs the container on port 8080, mapping from port 80 inside the container • Runs a single container • What about multi-container applications? • docker-compose up • Ideal for development environments
  • 20. Containerize applications inVisual Studio • Recommended to useVisual Studio to containerize applications when starting with Docker • Creates Dockerfiles • Creates Docker Compose files & overrides • Creates ignore files • Easy to Debug – Just F5 • Multiple applications start & debug with Docker Compose
  • 22. .NET Core & Containers • Cross-platform • Can target different OS compared to .NET Framework which requires Windows only • Microservices • .NET Core fits best the containers philosophy • Lightweight compared to .NET Framework • Container is lightweight also – Linux container size <Windows container size
  • 23. Operating systems for .NET Core apps Docker can implicitly understand the target OS and download the appropriate container (Linux or Windows) https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/net-core-net-framework- containers/net-container-os-targets
  • 25. Resources • https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/ • https://www.pluralsight.com/courses/docker-containers-big-picture • https://www.pluralsight.com/courses/docker-getting-started • https://www.packtpub.com/virtualization-and-cloud/microservices-development- azure-java-video • https://www.nginx.com/resources/library/app-dev-survey/ • https://www.docker.com/ Disclaimer: Diagram images used are taken from Microsoft’s guide on microservices

Editor's Notes

  1. Some notes
  2. Why so many errors in deployments? Why instruction books for deployments with steps? (Real world example) Why slow development? Why setting up so many dependencies, wasting time? (Real world example, 1 full day, 3 developers + 1 team lead/manager) Why CRQs? (Real world example)
  3. Sidestory – server migration in BAML
  4. Build a new stage, a small runtime-only base image Create /app directory in that image Expose port 80 Create a new stage with a larger image for building the application Create directory /src in the image Copy .csproj files Run dotnet restore Copy all directory tree for the solution to the /serc directory in the image Change current folder to Orders.API Build the project Then create a new stage, which publishes the artifacts from the .csproj Finally create a new stage, continuing from base and call it final Change current directory to /app Copy the /app directory from stage publish to the current directory Define the command to run when the container is started
  5. Open Visual Studio, create a new ASP.NET Core Application or open an existing and containerize it
  6. Create new solution Add a Web API application Add Docker support Run docker-compose up to compose all containers and their dependencies