docker machine(VirtualBox driver|boot2docker)での共有フォルダのバグ
共有フォルダ
Docker Toolboxで環境構築するとVirtualBox driverでDockerホストが構築され、その上でコンテナが走る。
なお、
- ホスト
- Mac, Windows等のVirtualBoxを動かしているマシン
- Dockerホスト
- VirtualBox上で動くVM、コンテナから見た時のホスト
と表記する。
デフォルトでは、ホストのディレクトリ(Windowsの場合はC:\Users
、Macの場合は/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
が導入された頃からフォルダ同期にバグが起きている模様
対応策
docker-machineには、Generic driverがあり、sshログイン出来れば、Dockerホストとしてdocker-machineで管理できるみたいなので、UbuntuやCentOSのイメージをVirtualBoxで作ってdocker-machineに加えるのが良いかもしれない(未確認)