やりたいこと、やっていること
ossの drone を利用したお手軽なCI環境を構築しようとしています。
droneの中身をちょっと修正したりしながらdroneおよびdockerコンテナ、カスタムイメージまわりの検証を実施しています。
Dockerのヴァージョンをあげると遅くなりました。。
AWS上で作成したubuntu14.04をホストにして単発で動かしたところさくさく動きました。
「おー、速い。」ということで、色気をだして、dockerのversionを1.7にあげたところ、ものすごく遅くなりました。。なぜ。。
ということで、droneのgitterで質問、および、droneの issues #271 を見てみました。
@bradrydzewski さんが回答してくれています。
Yep, that is definitely the issue. you need to run aufs instead of devicemapper. This is probably located in some Docker configuration file somewhere, but I'm not sure. aufs should be the default on Ubuntu.
Also, I believe Kernel 3.18 is going to include OverlayFS (similar to AUFS) which in my experience has performed very well. The Docker team also has experimental support for OverlayFS. So worst case scenario CoreOS can probably offer OverlayFS as an alternative to BTRFS in the near future.
ubuntuだったら、aufs
CoreOSだったら、OverlayFSを利用してね、
とありました。
簡単な動作検証
ということでいくつかのパターンで検証しました。
distribution | os version | instance type | storage driver | ビルド時間 | 実行場所 | docker version |
---|---|---|---|---|---|---|
coreos | 717 | t2.small | overlay | 5 min | remote | 1.6 |
coreos | 717 | t2.large | overlay | 3 min | remote | 1.6 |
coreos | 647 | t2.small | btrfs | 5 min | remote | 1.5 |
coreos | 647 | t2.medium | btrfs | 3 min | remote | 1.5 |
ubuntu | 1404 | t2.small | devise mappser | 5 min | remote | 1.6 |
ubuntu | 1404 | t2.medium | devise mappser | 3 min | remote | 1.6 |
ubuntu | 1404 | t2.small | aufs | 34 sec | local | 1.6 |
ubuntu | 1404 | t2.medium | aufs | 27 sec | local | 1.6 |
ubuntu | 1404 | t2.large | aufs | 13 sec | local | 1.6 |
ubuntu | 1404 | t2.small | aufs | 34 sec | remote | 1.6 |
ubuntu | 1404 | t2.medium | aufs | 27 sec | remote | 1.6 |
ubuntu | 1404 | t2.large | aufs | 22 sec | remote | 1.6 |
(※)「実行場所」はdroneを動かした場所が、ホストかリモートのマシンかの違いです。
推測
- インスタンスタイプは関係ない。
- OverlayFSは推奨されてはいたがあまり速くない。。むしろ遅いような。。
今後のTODO
- docker 1.8のzfsでも試してみたいです。動きが違うかもしれません。
- drone のヴァージョンアップを逐次チェック。