Great summary!
I'd be careful about equating VMs to containers. While from an end user they might look the same (a vessel where you run your code), they have some pretty fundamental differences that can affect how you run and manage your applications (e.g. containers share A LOT MORE resources with the host than VMs do, and the file systems are different). This stack overflow question has a good summary of the differences.
I'd also add docker exec to the list of commands. It's very useful when you want to run a command on a container that you already launched. I use it almost daily :).