SlideShare a Scribd company logo
DOCKER CONTAINERS
Developer’s experience and building robust developer environments
Docker Containers: Developer’s experience and building robust developer environments
The Old Way
Corporate Network
DEV
DB
Version
Control
PROD
DB
Prod
Tomcat
Deploy
Machine
Test
Tomcat
Dev Stations
New code
Checkout, build
Deploy
Deploy
We Were Lucky
It was not possible to install used
database engine to
a developer machine
(at least it was not easy)
Years Went On...
We investigated on building
batteries included developer environments
with stuff like VirtualBox and Vagrant
Enter the Docker
Docker Containers: Developer’s experience and building robust developer environments
psql-in-docker.sh
spin-dev-dbs.sh
Docker Containers: Developer’s experience and building robust developer environments
Docker Containers: Developer’s experience and building robust developer environments
Docker Containers: Developer’s experience and building robust developer environments
Docker is like a spacecraft
Containers should be like screwdrivers
A Container is an abstraction of
Unit of Work
Mixing Building and Running in the Same
Container
This is a really common pattern, also in production systems
It produces a Docker image that is more like a spacecraft than
a screwdriver
CMD is just a default for Docker run command
So one can easily run something like:
docker run -it acme-api npm login
Multi Stage Builds is a Bliss
I think this is the most important new feature in Docker, because
this is something that was really complex to achieve before.
Unfortunately all official node alpine images include NPM. There is
a Github issue on this:
https://github.com/nodejs/docker-node/issues/404
But now your image starts to look more like a screwdriver!
But what you can and should do..
… is to create ”incubator” containers that exist just for built just for building you app image
The best situation would be that one is able to run incubator locally
Avoid Building Hard Environmented Images
docker run acme-api-production:1.2.3
docker run acme-api-development:1.2.3
docker run acme-api-local:1.2.3
Build Flexible Images
docker run 
-e "DB_HOST=localhost" 
-e "DB_USER=foobar" 
–e "DB_PASS=notsecret" 
acme-api:1.2.3
docker run 
-e "DB_HOST=db.acme.org" 
-e "DB_USER=acme_db" 
–e "DB_PASS=crypto-store:/acme-api/db-password" 
acme-api:1.2.3
Make tooling! (run-acme-api-locally.sh)
Sensible local defaults!
Devs need to be able to easily launch same containers locally!
TRUST
THE ENV
LUKE!
I want To Hot-Reload Code From My IDE to a
Running Container Locally!?
Don’t EVER support this in the image that is meant to be
deployed to a live environment
Instead, make tooling for building local images
that support hot reloading
docker run acme-api-hotreload:localbuild
(Disclaimer: I don’t know, if this is actually a good idea in the first place…)
Give team the possibility to embrace
Docker and Containers
We should talk more about
Development Architecture
Running in production is a one thing
Developing is something that has not
been addressed that much
Works on my machine
We must avoid magic machines
Your repository should always be runnable
in a new machine ”in fifteen minutes”
If you have a good workflow
Share it, if possible
Current blogsphere on
(cloud)
development architectures
is somewhat non-existent
Embrace DevOps Culture
Do not hide containers
Embrace and enable developers to
test and run stuff locally in containers
as well
Tänan!!!
JUHO FRIMAN
Software Architect
juho.friman@solita.fi
@commafakir
Ps. We are hiring!
Docker Containers: Developer’s experience and building robust developer environments

More Related Content

PPTX
Docker presentation
PDF
Hands-On Session Docker
PDF
Automated Deployment with Capistrano
PDF
SEP DevOps Ignite Talk - Packer
PDF
Webinar: Creating an Effective Docker Build Pipeline for Java Apps
PDF
Webinar: Using Docker Multi-stage Build to Create Advanced Pipelines
PDF
Docker Tooling for Eclipse
PDF
macos installation automation
Docker presentation
Hands-On Session Docker
Automated Deployment with Capistrano
SEP DevOps Ignite Talk - Packer
Webinar: Creating an Effective Docker Build Pipeline for Java Apps
Webinar: Using Docker Multi-stage Build to Create Advanced Pipelines
Docker Tooling for Eclipse
macos installation automation

What's hot (20)

PDF
Docker slides
PPTX
SQL Sever on Docker: Database Containers 3 Ways
PPTX
KEY
How To Make A Framework Plugin That Does Not Suck
PDF
Docker Introduction
PPTX
Webinar: Development Swarm Cluster with Docker Compose V3
PDF
CoreOS at Carnival
PDF
Drupal VM for Drupal 8 Dev - MidCamp 2017
PPTX
vodQA(Pune) 2018 - Docker in Testing
PDF
Automating Docker Containers with Puppet 2014 10-13
PDF
Packer by HashiCorp
PPTX
Docker Ecosystem: Part III - Machine
PDF
Ansible Introduction
PDF
1 docker first_linux_container_hands_on
 
PPTX
Automating Dev Environment - Introduction to Docker and Chef
PPTX
Docker for .NET Developers
PDF
Introducción a contenedores Docker
PPTX
Cloud+Data Next: Mashing Linux and Windows Containers
PDF
Luciano Fiandesio - Docker 101 | Codemotion Milan 2015
PPTX
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
Docker slides
SQL Sever on Docker: Database Containers 3 Ways
How To Make A Framework Plugin That Does Not Suck
Docker Introduction
Webinar: Development Swarm Cluster with Docker Compose V3
CoreOS at Carnival
Drupal VM for Drupal 8 Dev - MidCamp 2017
vodQA(Pune) 2018 - Docker in Testing
Automating Docker Containers with Puppet 2014 10-13
Packer by HashiCorp
Docker Ecosystem: Part III - Machine
Ansible Introduction
1 docker first_linux_container_hands_on
 
Automating Dev Environment - Introduction to Docker and Chef
Docker for .NET Developers
Introducción a contenedores Docker
Cloud+Data Next: Mashing Linux and Windows Containers
Luciano Fiandesio - Docker 101 | Codemotion Milan 2015
vodQA(Pune) 2018 - Visual testing of web apps in headless environment manis...
Ad

Similar to Docker Containers: Developer’s experience and building robust developer environments (20)

PPTX
Developer workflow with docker
PDF
Best Practices for Developing & Deploying Java Applications with Docker
PDF
codemotion-docker-2014
PDF
Introduction to Docker and deployment and Azure
PDF
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
PDF
Continuous Integration with Docker on AWS
PDF
Docker for Developers
PDF
Docker primer and tips
PPTX
Docker introduction
PPTX
Docker introduction (1)
PPTX
Docker introduction (1)
PPTX
Up & Running with Docker
PDF
Accelerate your software development with Docker
PPTX
Accelerate your development with Docker
PDF
Agile Brown Bag - Vagrant & Docker: Introduction
PPTX
Docker lxc win
PPTX
Dockerize the World - presentation from Hradec Kralove
PDF
Introduction to Docker at the Azure Meet-up in New York
PDF
Be a better developer with Docker (revision 3)
PDF
Docker up and Running For Web Developers
Developer workflow with docker
Best Practices for Developing & Deploying Java Applications with Docker
codemotion-docker-2014
Introduction to Docker and deployment and Azure
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Continuous Integration with Docker on AWS
Docker for Developers
Docker primer and tips
Docker introduction
Docker introduction (1)
Docker introduction (1)
Up & Running with Docker
Accelerate your software development with Docker
Accelerate your development with Docker
Agile Brown Bag - Vagrant & Docker: Introduction
Docker lxc win
Dockerize the World - presentation from Hradec Kralove
Introduction to Docker at the Azure Meet-up in New York
Be a better developer with Docker (revision 3)
Docker up and Running For Web Developers
Ad

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Empathic Computing: Creating Shared Understanding
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Chapter 3 Spatial Domain Image Processing.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Programs and apps: productivity, graphics, security and other tools
MIND Revenue Release Quarter 2 2025 Press Release
20250228 LYD VKU AI Blended-Learning.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Reach Out and Touch Someone: Haptics and Empathic Computing
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Unlocking AI with Model Context Protocol (MCP)
The AUB Centre for AI in Media Proposal.docx
Network Security Unit 5.pdf for BCA BBA.
Review of recent advances in non-invasive hemoglobin estimation
Empathic Computing: Creating Shared Understanding
Encapsulation_ Review paper, used for researhc scholars
MYSQL Presentation for SQL database connectivity
Understanding_Digital_Forensics_Presentation.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Digital-Transformation-Roadmap-for-Companies.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Chapter 3 Spatial Domain Image Processing.pdf

Docker Containers: Developer’s experience and building robust developer environments

  • 1. DOCKER CONTAINERS Developer’s experience and building robust developer environments
  • 3. The Old Way Corporate Network DEV DB Version Control PROD DB Prod Tomcat Deploy Machine Test Tomcat Dev Stations New code Checkout, build Deploy Deploy
  • 4. We Were Lucky It was not possible to install used database engine to a developer machine (at least it was not easy)
  • 5. Years Went On... We investigated on building batteries included developer environments with stuff like VirtualBox and Vagrant
  • 12. Docker is like a spacecraft Containers should be like screwdrivers
  • 13. A Container is an abstraction of Unit of Work
  • 14. Mixing Building and Running in the Same Container This is a really common pattern, also in production systems It produces a Docker image that is more like a spacecraft than a screwdriver CMD is just a default for Docker run command So one can easily run something like: docker run -it acme-api npm login
  • 15. Multi Stage Builds is a Bliss I think this is the most important new feature in Docker, because this is something that was really complex to achieve before. Unfortunately all official node alpine images include NPM. There is a Github issue on this: https://github.com/nodejs/docker-node/issues/404 But now your image starts to look more like a screwdriver!
  • 16. But what you can and should do.. … is to create ”incubator” containers that exist just for built just for building you app image The best situation would be that one is able to run incubator locally
  • 17. Avoid Building Hard Environmented Images docker run acme-api-production:1.2.3 docker run acme-api-development:1.2.3 docker run acme-api-local:1.2.3
  • 18. Build Flexible Images docker run -e "DB_HOST=localhost" -e "DB_USER=foobar" –e "DB_PASS=notsecret" acme-api:1.2.3 docker run -e "DB_HOST=db.acme.org" -e "DB_USER=acme_db" –e "DB_PASS=crypto-store:/acme-api/db-password" acme-api:1.2.3 Make tooling! (run-acme-api-locally.sh) Sensible local defaults! Devs need to be able to easily launch same containers locally! TRUST THE ENV LUKE!
  • 19. I want To Hot-Reload Code From My IDE to a Running Container Locally!? Don’t EVER support this in the image that is meant to be deployed to a live environment Instead, make tooling for building local images that support hot reloading docker run acme-api-hotreload:localbuild (Disclaimer: I don’t know, if this is actually a good idea in the first place…)
  • 20. Give team the possibility to embrace Docker and Containers
  • 21. We should talk more about Development Architecture Running in production is a one thing Developing is something that has not been addressed that much
  • 22. Works on my machine We must avoid magic machines Your repository should always be runnable in a new machine ”in fifteen minutes”
  • 23. If you have a good workflow Share it, if possible Current blogsphere on (cloud) development architectures is somewhat non-existent
  • 24. Embrace DevOps Culture Do not hide containers Embrace and enable developers to test and run stuff locally in containers as well