shibuso.net

プログラミングとかゲームとか

Dockerのマウントが重すぎる件

2017年04月10日 | タグ: 開発

まず前置きとして私は使い慣れているWindows環境が好きで、Macを試してみたものの馴染めずに戻ってきました。しかしWeb開発、それも主にRubyとRailsを使って開発しているためLinux環境は欠かせません。そのため常に仮想環境が必要となりますが、エディタはやはりWindows上で、それもIntelliJ IDEAを使いたいという思いがあります。

そんな私の最近ローカル仮想環境はDockerで構築しています。ただ、Dockerを上手に使っているかと聞かれるとそんなことはなくて、普通のVMのようにSSHだのDBだのあれこれ一つのコンテナに詰め込んでしまっているので、むしろDocker使いの方からは怒られるような使い方をしてしまっている気がします(汗

ただし最近この環境の重さ・遅さに辟易としてきました。何が重いかというと、Dockerでホストのフォルダをマウントしているのですが、その読み込みがとてつもなく遅いときがあるのです。ファイル数も影響しているのか、以前は気にならなかったのですが、最近悪化している気がしていました。

これはどうもDockerというよりもそれを動かしているVirtualBoxのshared folder機能に問題があるみたいです。確かに以前VirtualBox単体で使用していた際も重いと感じたことはありました。またこれはホストOSがWindowsかMacかという点は関係なく重いそうです。それとDockerのフォーラムで結構長いやりとりがされていますが、同じVMというジャンルでもVMwareでもそういう現象が報告されています(人によって程度に違いはあるみたいですが)。

そんな重さに嫌気が差したため、Dockerのマウントを捨てて以前も使っていたSSHFSに変更してみたところ、すこぶる快適になりましたヽ(´ー`)ノ いやぁ、あんなに読み込みが遅かったのが嘘みたいにサクサク動いてくれます。

ただこのSSHFSが万能かというと、そうとは言い切れません。ソースコードはGitで管理しているのですが、ホスト側から管理できなくなりました。正確に書くと、以前はホストOSであるWindowsの環境下にSourceTreeを使って管理していたのですが、今回Docker下にファイルを置くことになったため、どうも不具合が発生して取り扱えません。

IntelliJ IDEAにもGit機能はあるのですが、これも正常に動作しません。むしろindex.lockファイルを生成したままでロックされてしまうため(SourceTreeでも同じ現象が発生しました)、使わないように設定を変更した方が無難です。というわけでソースコードの管理はDocker上でコンソールでGitコマンドを叩いて対応しています。私は以前もコンソールから叩いていたので思い出せば楽勝でした、助かった(´ー`;

という感じに完璧ではないですが、私はこの方法で最近は開発しています。ありがたい事にWindowsでDockerを使うためのwin-sshfsdokan(dokany)の開発が再開(?)されているため、Win10(64bit)環境でもきちんと動いてくれています。Dockerを使う人だけじゃなく、VirtualBoxやVMware等を使っていて、共有フォルダの挙動の重さに困っている人も試してみると良いかもしれません。