What's the difference between using a virtual machine and a container solution such as docker? Also what are the pros and cons of each solution?