Developing with Docker
Connor Jones
2018-03-02
What is Docker?
Docker is a platform to
run/share/manage
Containers
Containers
Are a self contained environment
Should NOT contain application data
Should be ephemeral
Containers vs VMs
Images
Define an environment (container)
Built in Layers
Images vs Snapshots
Images are smaller
Docker has better tools (registry, compose, networking)
Less to manage
Layers
Layers are steps in a Dockerfile
Layers are unique, but can be shared and reused
Build with Layers
Only layers "above" and change need to be rebuilt
Dockerfiles can be optimized by changing the order of the build
Containers in Development
Problems with Development at Scale
"Builds here but not there"
"Did you set this ENV variable?"
"Do you have packageX installed"
"Does the OS build tag match the Product build tag?"
Having a consistent environment
Traditional Solutions
Central/Shared Servers maintained by staff
VM Snapshots
Managing the "Extra" stuff yourself
Docker Solutions
Docker Images
Split environment and source code
Base images as boilerplate for new processes
Docker compose for networking containers (database to a web framework)
Demo Time
Made with Slides.com