Docker can be used for deployment, local development and testing. It’s also a useful experimenting and tinkering tool. But what practical problems can it help solve? Here’s a non-exhaustive list of problems which can be made less painful with the help of Docker. If you’re looking to understand what jobs Docker has you can read more here. There are three main ones - packaging, distributing and running applications. This is a slightly different, more practical way to approach the same topic.