docker machine(VirtualBox driver|boot2docker)での共有フォルダのバグ

共有フォルダ

Docker Toolboxで環境構築するとVirtualBox driverでDockerホストが構築され、その上でコンテナが走る。
なお、

ホスト
Mac, Windows等のVirtualBoxを動かしているマシン
Dockerホスト
VirtualBox上で動くVM、コンテナから見た時のホスト

と表記する。

デフォルトでは、ホストのディレクトリ(Windowsの場合はC:\UsersMacの場合は/Users)が自動でDockerホストにマウント、同期されるため、

$ docker -it -v /Users/user/develop:/develop ubuntu /bin/bash

のようにコンテナにホストのディレクトリ(実際は、Dockerホストに同期されたディレクトリ)をマウントできる。

問題

同期の対象となっているファイルを、ホストで書き換えた時に正常に同期されないバグ*1

どうなっているのかと、docker-machine ssh defaultでDockerホストにログインしてみると、同期されていなかったり、削除した行とは別の行が消えていたりと悲惨なことになっていた。
更に、catだと同期されていないことが確認できるのに、lessだとちゃんと同期されているというよく分からない状態*2だった。

既知のバグ

バグ報告したほうがいいのかと思ったら既に上がっていた。
Docker Toolboxでも、VMにはboot2dockerが用いられているようで、FSCACHEが導入された頃からフォルダ同期にバグが起きている模様

medium.com

github.com

対応策

docker-machineには、Generic driverがあり、sshログイン出来れば、Dockerホストとしてdocker-machineで管理できるみたいなので、UbuntuCentOSのイメージをVirtualBoxで作ってdocker-machineに加えるのが良いかもしれない(未確認)

*1:itamaeをDockerで試している時に気づいた

*2:itamaeのremote_fileも正常に同期されなかった