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
The analogy we use here at Docker is comparing houses (virtual machines) to apartments (Docker containers).
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).
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.
Check out 18F/atul-docker-presentation/flask-example!