>>2
VMwareなんかは、ハードウェアをエミュレートしている
仮想マシンを作り出すという意味の仮想機能
Dockerは実行環境を仮想化するもので、仮想マシンとは全く違う

同じアプリでもOSが違ったら動かなくなったりするだろ?
それはアプリ以外の部分が違うから

Dockerはアプリにそのアプリ以外の部分=実行環境を
くっつけてしまうもの(ただしLinuxカーネル部分は除く)
だから違うOSでもアプリは問題なく動くようになる

仮想マシンは、仮想的なマシン上にOSをインストールしてアプリを動かすが、
Dockerの場合はアプリに実行環境をくっつけただけ
だから普通にアプリを実行しているのと同じでそのOS上で動く。
ようするにOSが変わっても問題なく動くアプリが作れる

といってもそれはLinuxの場合の話でWindows・Macだと
裏でこっそり仮想マシン+Linuxが動いていた
それがWindowsでは、WSLによるLinuxカーネル互換機能に
よって仮想マシン+Linuxなしで動くようになった。