Docker for macに乗り換えようかと迷った

もともとmacでのdockerはdinghyをずっと使っている. docker-syncはなんか違うなーと思っているし,dockerを使いはじめる段階ではそもそもDocker for macがまだ公開されていなかった.

で,Docker for macが公開されたのはいいんだけど,ずっとファイル共有が遅いという問題が解決していなかったように思う.

最近は,cachedとかdelegatedというのがでてきて

docs.docker.com

速くなってきたらしいというので,いよいよDocker for macに乗り換えられるかなーと思った.

測ってみる

本来ならreadとwrite両方図るべきだろうが,とりあえず実用的にどのくらい変わるのかが見たい. だから,ちょっと重めのRailsアプリを起動してみようと思う.

今回は rake statsしてみる.おそらくほぼすべて読み込みしか走らないだろうから,delegatedの検証にはならなくて,ほぼcachedしか効かないだろう. でもそもそも,読み込みが遅かったらRailsの起動が遅くて嫌になると思うんだ.

dinghy

まずはいつも使っているdinghy.

rails@926dcbe21411:/usr/src/app$ time bundle exec rake stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |    400 |    315 |      10 |      32 |   3 |     7 |
| Helpers              |     66 |     61 |       0 |       6 |   0 |     8 |
| Jobs                 |      0 |      0 |       0 |       0 |   0 |     0 |
| Models               |    633 |    224 |      25 |      12 |   0 |    16 |
| Mailers              |      0 |      0 |       0 |       0 |   0 |     0 |
| JavaScripts          |    290 |    210 |       0 |      34 |   0 |     4 |
| Libraries            |  49084 |  33998 |       4 |    4395 | 1098 |     5 |
| Model specs          |    607 |    518 |       0 |       0 |   0 |     0 |
| Request specs        |    261 |    232 |       0 |       0 |   0 |     0 |
| Lib specs            |    606 |    535 |       0 |       0 |   0 |     0 |
| Routing specs        |    252 |    190 |       0 |       0 |   0 |     0 |
| Job specs            |     15 |      1 |       0 |       0 |   0 |     0 |
+----------------------+--------+--------+---------+---------+-----+-------+
| Total                |  52214 |  36284 |      39 |    4479 | 114 |     6 |
+----------------------+--------+--------+---------+---------+-----+-------+
  Code LOC: 34808     Test LOC: 1476     Code to Test Ratio: 1:0.0


real    0m30.025s
user    0m2.990s
sys 0m6.370s

docker for mac(オプションなしでの起動)

次はdocker for mac.ただしこの段階ではcachedもdelegatedも付けない.

rails@1b51833409d0:/usr/src/app$ time bundle exec rake stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |    400 |    315 |      10 |      32 |   3 |     7 |
| Helpers              |     66 |     61 |       0 |       6 |   0 |     8 |
| Jobs                 |      0 |      0 |       0 |       0 |   0 |     0 |
| Models               |    633 |    224 |      25 |      12 |   0 |    16 |
| Mailers              |      0 |      0 |       0 |       0 |   0 |     0 |
| JavaScripts          |    290 |    210 |       0 |      34 |   0 |     4 |
| Libraries            |  49084 |  33998 |       4 |    4395 | 1098 |     5 |
| Model specs          |    607 |    518 |       0 |       0 |   0 |     0 |
| Request specs        |    261 |    232 |       0 |       0 |   0 |     0 |
| Lib specs            |    606 |    535 |       0 |       0 |   0 |     0 |
| Routing specs        |    252 |    190 |       0 |       0 |   0 |     0 |
| Job specs            |     15 |      1 |       0 |       0 |   0 |     0 |
+----------------------+--------+--------+---------+---------+-----+-------+
| Total                |  52214 |  36284 |      39 |    4479 | 114 |     6 |
+----------------------+--------+--------+---------+---------+-----+-------+
  Code LOC: 34808     Test LOC: 1476     Code to Test Ratio: 1:0.0


real    7m1.390s
user    0m8.040s
sys 0m28.270s

なんという遅さ…….

docker for mac(cached)

次はcachedをつけてみる.

rails@e6ca04c4f889:/usr/src/app$ time bundle exec rake stats
+----------------------+--------+--------+---------+---------+-----+-------+
| Name                 |  Lines |    LOC | Classes | Methods | M/C | LOC/M |
+----------------------+--------+--------+---------+---------+-----+-------+
| Controllers          |    400 |    315 |      10 |      32 |   3 |     7 |
| Helpers              |     66 |     61 |       0 |       6 |   0 |     8 |
| Jobs                 |      0 |      0 |       0 |       0 |   0 |     0 |
| Models               |    633 |    224 |      25 |      12 |   0 |    16 |
| Mailers              |      0 |      0 |       0 |       0 |   0 |     0 |
| JavaScripts          |    290 |    210 |       0 |      34 |   0 |     4 |
| Libraries            |  49084 |  33998 |       4 |    4395 | 1098 |     5 |
| Model specs          |    607 |    518 |       0 |       0 |   0 |     0 |
| Request specs        |    261 |    232 |       0 |       0 |   0 |     0 |
| Lib specs            |    606 |    535 |       0 |       0 |   0 |     0 |
| Routing specs        |    252 |    190 |       0 |       0 |   0 |     0 |
| Job specs            |     15 |      1 |       0 |       0 |   0 |     0 |
+----------------------+--------+--------+---------+---------+-----+-------+
| Total                |  52214 |  36284 |      39 |    4479 | 114 |     6 |
+----------------------+--------+--------+---------+---------+-----+-------+
  Code LOC: 34808     Test LOC: 1476     Code to Test Ratio: 1:0.0


real    1m57.487s
user    0m6.990s
sys 0m10.460s

まとめ

素のdocker for macよりはだいぶ速くなった.

だけどやっぱりまだdinghyよりかなり遅いな.

まだdinghyから抜け出せそうにない.

あと,やるなら各自用途によって自分のやりたいことを計測したほうがいいと思う.