36
18

More than 5 years have passed since last update.

Docker for Mac の volumesマウントが異常に遅い(半分解決)

Posted at

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();が遅くなり使い物にならず...)

直したから4月にリリースするよ by dockerの中の人

-v /hostdir:/mountdir:cached

簡単に言うと「cachedオプションをつけて解決だ!」
そこまで言うなら、期待して待つ

待つこと1ヶ月!!

Edge版だけど試してみてね by dockerの中の人

早速試してみる

まず、現在のバージョンを全部消しちゃいましょう
イメージも消えちゃうから気をつけましょう

docker(17.04.0-ce)をインストール

インストールしたらバージョンを確認しましょう

$ docker --version
Docker version 17.04.0-ce, build 4845c56

docker run でのcachedの使い方

$ 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の使い方

    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時点)
36
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
18