Dockerが仮想マシンなしでネイティブで動くのまだ?
前提知識
・DockerはLinuxカーネルの機能を使う
・macOS、WindowsはLinuxカーネルではない
・だからDockerを動かすため仮想マシンが必要
・Windows 10にWSL(windows linux subsystem)機能が登場
・WSLはLinuxカーネルをWindowsでエミュレートすることでLinux環境を作り出す
・Windows上でUbuntuなどのディストロがそのまま動く
何が起きたか
・Dockerは高いLinuxカーネル互換性が必要なので今まで動かなかった
・いつの間にか動くようになっていた
WSL上でDocker Engineが動くようになっていたっぽいという話
https://qiita.com/yanoshi/items/dcecbf117d9cbd14af87
これにより何が変わったか?
・仮想マシンによる制約がなくなった
・具体的にはメモリ使用量を仮想マシンに割り当てることなく、必要な文しか使わなくなった
・WindowsはもはやLinuxを取り込んだと言っても変わらない
・macOSはUnixだが、WindowsはLinux
・今の世の中、UnixよりもLinuxのほうが使われている ツーカ、Dockerって何?
仮想機能の何か、ツーのはなんとなくわかるが
VMwareなんかと何がどう違うんだ? >>2
VMwareなんかは、ハードウェアをエミュレートしている
仮想マシンを作り出すという意味の仮想機能
Dockerは実行環境を仮想化するもので、仮想マシンとは全く違う
同じアプリでもOSが違ったら動かなくなったりするだろ?
それはアプリ以外の部分が違うから
Dockerはアプリにそのアプリ以外の部分=実行環境を
くっつけてしまうもの(ただしLinuxカーネル部分は除く)
だから違うOSでもアプリは問題なく動くようになる
仮想マシンは、仮想的なマシン上にOSをインストールしてアプリを動かすが、
Dockerの場合はアプリに実行環境をくっつけただけ
だから普通にアプリを実行しているのと同じでそのOS上で動く。
ようするにOSが変わっても問題なく動くアプリが作れる
といってもそれはLinuxの場合の話でWindows・Macだと
裏でこっそり仮想マシン+Linuxが動いていた
それがWindowsでは、WSLによるLinuxカーネル互換機能に
よって仮想マシン+Linuxなしで動くようになった。 WINEはどちらかというとWSLに近いな
もっともWINEはアプリ側でWindows相当の機能を実装しているのに比べて
WSLはOSの機能としてLinuxカーネル互換機能が搭載されているわけだけど
https://kledgeb.blogspot.com/2016/06/wsl-25-wsl.html macのdockerはクソ遅くて使い物にならんです