What is docker? what problems does it solve?
Docker is a technology that allows you to create OS-level virtualization for software delivery.  There are many, many articles written about what this technology is, how it can help developers and companies, and tutorials on how to get started.

To answer your question of why as a developer you may care (non-exhaustive list):


Building an application that is immediately ready for deployment.
Removing cumbersome installs for quick prototyping and testing.  I use it all the time to setup a SQL server to test scripts before deploying them.
Removes the "It works on my machine" since all the application dependencies are in a "container".
Allows you to easily run and port services that usually would require several minutes of installations and configurations.


For your AWS example, imagine not having to SSH into a server, pull source down, and setup the environment every time you want to scale up or out.  Most cloud providers now have options to deploy your containers and not worry about all those steps (see AWS ECS).

The Docker-Compose you mentioned is slightly different in that it is a way to easily run multiple containerized services together.