#volumesマウントが異常に遅い
Docker for Macが遅い
とにかく遅い
ホストのディレクトリにvolumesをマウントすると遅い
みんなどうやって使ってるのか不思議なくらい遅い
そこで調べてみたら、issue上がってるー
File access in mounted volumes extremely slow #77 issuecomment-287896901
Host VM File loc Build time
Mac VirtualBox VM 41.715s
Windows VirtualBox VM 48.928s
Mac Docker VM 51.915s
Mac VirtualBox host 69.139s <- forced to use this
Windows Docker VM 83.194s
Mac Docker host 122.067s <- because this is too slow
Windows VirtualBox host 126.406s
Windows Docker host 168.358s
Mac on VirtualBoxの優秀さ
体感で3〜5倍程度遅かったので、まぁこんな感じ。
そこで、docker-syncも試しました(当然)
速くなりますよ。
でも、なんか違くね?
dockerの裏でrsync(unison)してるので大量なファイルだと少しlagがあるのです。
(しかも、自分の環境ではphp7のob_start();が遅くなり使い物にならず...)
-v /hostdir:/mountdir:cached
簡単に言うと「cachedオプションをつけて解決だ!」
そこまで言うなら、期待して待つ
##待つこと1ヶ月!!
#早速試してみる
まず、現在のバージョンを全部消しちゃいましょう
イメージも消えちゃうから気をつけましょう
##docker(17.04.0-ce)をインストール
https://download.docker.com/mac/edge/Docker.dmg
インストールしたらバージョンを確認しましょう
$ docker --version
Docker version 17.04.0-ce, build 4845c56
$ docker run --rm -v $(pwd):/mount:cached -w /mount golang:latest \
bash -c 'time go list ./... &>/dev/null'
###docker-composeを利用してる場合
docker-composeもバージョンを1.12.0へアップする必要があります
$ curl -L "https://github.com/docker/compose/releases/download/1.12.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
docker-composeもバージョンを確認しましょう
$ docker-compose --version
docker-compose version 1.12.0, build b31ff33
[docker-composeでのcachedの使い方]
(https://github.com/docker/for-mac/issues/77#issuecomment-292277623)
volumes:
- "{local directory}:{docker directory}:cached"
#結果
file | docker | docker | docker | lsyncd ad-hoc
| 17.03.0-ce | 17.04.0-ce | 17.04.0-ce | container
| | | :cached) |
------------------------------------------------------------------------
app_dev.php | 319ms/req | 312ms/req | 84ms/req | 46ms/req
app.php | 86ms/req | 83ms/req | 21ms/req | 9ms/req
#結論
- どうしてもdockerを使う必要があれば、cachedオプションは有効
- docker-syncの選択肢もあるが、大量ファイルだと微妙な挙動に
- macで開発するならvirtualbox+vagrantが速度的にはベスト!(2017/04/14時点)