dockerは軽量なだけでなく、配布の仕組みが標準化されていて
仮想マシンと言うより
どのLinuxでも動くパッケージマネージャーの代わりのように使える

docker pullしてくればすぐに起動して使える
自分のコード追加してdocker pushして再配布も簡単

特定の仮想マシン向け、例えばVirtualBoxにイメージ作ったら
その仮想マシンでしか動かないじゃん

カーネルを含めず
その上で動くソフトウェアだけを確実にどのLinuxにも持っていける仕組みがあれば
という問題をDockerが解決した