VirtualBox
VMwareFusion
docker
boot2docker
docker-machine

Mac上のdockerでVMWareのネイティブフォルダシェアが実現した話

More than 3 years have passed since last update.

ちょっとタイトルが意味不明になってますが。
docker-machine経由でVMWare Fusion上にdocker環境を用意することで、VMWareのネイティブフォルダシェアが実現したようです。

これによって、Mac上のNFSをasync書き込み許可してVagrantを爆速にするのような小細工を使わなくても、普通のMac上のファイルを触るのとほぼ同じ速度でdockerを扱えます。
…分かりやすくどう表現したらいいか思い当たりませんが、とりあえず今までのboot2docker on Macよりめっちゃ速くなるってことです。

語弊があるのは承知ですが、Linux上でdockerを動作させるのと遜色ない速度で動くのはちょっとした革命じゃないでしょうか?

いままで

Macでdockerを起動させるためのboot2dockerは、Virtualbox独自のシェアフォルダ機能でファイル同期をしているんですが、これがかなり遅かった。
そこで、なんとかnfsを使って高速化させようと、Vagrantを経由し、boot2docker自体をも改変して実現するForkがGitHubでもちらほら見かけました。

ただ、docker自体のアップデートに追従しないといけないので、保守が超面倒。
やっぱりリリースされた瞬間からスムースに新しいバージョン使いたいですよね。

Docker社謹製のdocker-machine

そうこうしてるうちに、最近になってDocker三種の神器とも言われるmachine,compose,swarmが発表されました。

その中のmachine。
機能としては、様々なプラットフォーム(AWS・DigitalOcean・GCE・Virtualboxなど)に一発でdocker環境を構築するものです。

VMWare対応

https://github.com/docker/machine/releases/tag/v0.1.0
そのmachineにも、二ヶ月ぐらい前にかなりのプラットフォームが追加され、そこにVMWareを見かけて試したものの、この時はまだVMWare独自のシェアフォルダ機能には対応していませんでした。
ようはVagrantでvmware_fusionをプロバイダとして起動してるのとあんま変わらない。ので遅かったのです。

夢のShared folder support for VMware Fusion

2015-04-20に、VMWare社に勤務(? Organizationsではあるようです)しているfrapposelli氏がdocker 1.6.0対応と共にShared folder support for VMware Fusionをコミット、docker-machineにマージされました。
https://github.com/docker/machine/commit/25583edbb384e7d95088d074a6c3b1d16fbfe580

早速試してみたところ、いままでのboot2dockerを大きく上回る速度でdocker pullしてくれました!

ということで

VMWareをお持ちであれば、すぐにでもdocker-machineに切り替えましょう。

ちなみに

  • 失礼しました。Fabio Rapposelli氏はVMWareのCTOのようでした。
  • docker-machineもローカル環境用にはboot2docker forkを使用しています
  • なので元のboot2docker forkを保守してくれるかにかかっています
  • Parallels Desktopはいま進行中のようです。動きはするがshared folderに対応するまでmachineにはマージしない模様
  • boot2dockerも、cliはdocker-machineに移譲するつもりのよう
  • boot2dockerがdocker organizationsに吸収される日もあるのかも…