「クソみたいに遅いじゃん。」自分の経験ではないですが、今後の為に資料を調査して理由・対応方法を咲くってみました。
遅い理由
結論としては「Docker For Mac」がosxfsを採用している。あ!!それよりosxfsがOSXのFSEvents APIとLinux’s inotify APIをマッピングさせているのが原因です。
参考:https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076/158
- osxfsの throughput は250 MB/s
-> これはほとんどのAPPで問題にならないはず - コンテナ内からosxfsに対するファイルIOのシステムコールはlatencyが遅い。書き込み時で200μs
-> 通常のファイルシステムであれば under 10μs(クソやられた感じ)
対応方法
じゃ、簡単!!「Docker For Mac」を使えなければ良い。( ゚Д゚)ヴォケ!!
VirtualBoxを利用
docker-machineでVirtualBox上に立ち上げたdocker環境で開発環境を構築する。うん、面倒だ〜〜〜(;^ω^)
Docker For Macを使わない
CE 17.12 (edge) チャンネルを使うこと。(・д・)チッ
参考:https://blog.hanhans.net/2017/05/10/docker-user-guided-caching/
コンテイナ間を爆速で同期する
例としてはdocker-syncをおすすめします。rsyncで設定が簡単かな。
対策の実験
興味がある方はこちらへ
Laravel + Docker + 開発環境
Docker For Macが遅い:対策 - Mutagen編