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