What is Docker?

Docker allows you to package an application with all of its dependencies into a standardized unit for software development.

This means dev/prod parity!

😅

It also means saying goodbye to tools like...

  • rvm
  • nvm
  • pyenv
  • virtualenv

Images and Containers

Containers are not VMs

The analogy we use here at Docker is comparing houses (virtual machines) to apartments (Docker containers).

Want to dig deeper?

For details on why the “shipping container” metaphor is apt, listen to Planet Money Episode 500: The Humble Innovation At The Heart Of The Global Economy (18 minutes).

Super simple demo

docker run -it --rm alpine:3.4 sh

Try apk update && apk add nano in there.

When you exit the container, nano disappears, as do any of your changes to the filesystem.

😖

Optimally Docker containers are completely stateless and immutable.

Less simple demo

Check out 18F/atul-docker-presentation/flask-example!