githubに移転しました.今後は基本的にはgithub版を更新します.
https://github.com/AkihiroSuda/docker-issues
Dockerのストレージとして用いられるファイルシステムのバグのリスト(随時更新)
AUFS
issue | 概要 | 原因 | 簡単な解決策 |
---|---|---|---|
#783 | パーミッションがおかしい | AUFSの仕様.dirperm1をサポートするカーネルでは問題ない. | dirperm1をサポートするカーネルに更新 |
#18180 | プロセスがゾンビになって刺さる | カーネル本体のバージョンとAUFSのバージョンとの相性 | AUFS 20160111以降にカーネル更新 |
#20199(Open) | fcntl(F_SETFL, O_APPEND)が無視される | AUFSのバグ | なし(あるいはカーネルにパッチを当てて野良ビルド) |
#20240(Open) | dirperm1が有効でもパーミッションがおかしい | 未解析 | なし |
OverlayFS
issue | 概要 | 原因 | 簡単な解決策 |
---|---|---|---|
#10180(Open) | checksumエラーでyumが失敗する | ファイルディスクリプタに関するoverlayfsの仕様(1,2) |
yum-plugin-ovl パッケージを入れる |
#12080(Open) | UNIXドメインソケットが使えない | overlayfsのバグ | なし(あるいはカーネルにパッチを当てて野良ビルド) |
#19082(Open) | カレントディレクトリの削除に失敗したときの挙動がおかしい | overlayfsのバグ | なし(あるいはカーネルにパッチを当てて野良ビルド) |
#19647(Open) | symlinkを含むtarの展開が非決定的に失敗する | 未解析 | なし |
#19758(Open) | run,removeを頻繁に繰り返すとハングアップ | 未解析 | なし |
バグとまでは言えないが懸念事項
- inode消費量が多い
BtrFS
issue | 概要 | 原因 | 簡単な解決策 |
---|---|---|---|
#19073 |
sendfile(2) が刺さる |
btrfsのバグ | なし |
#20080(Open) | cgroups kmem limit値を設定するとクラッシュ,データロス | btrfsのバグ | kmem limitの設定を避ける? |
バグとまでは言えないが懸念事項
- 遅い #10161
- ページが共有されない (DLLなどが重複して読み込まれる) http://comments.gmane.org/gmane.comp.sysutils.docker.devel/1384
ZFS
issue | 概要 | 原因 | 簡単な解決策 |
---|---|---|---|
#20153(Open) | 諸々の操作がEBUSYでfail | 未解析 | なし |
DeviceMapper (ファイルシステムではないが)
issue | 概要 | 原因 | 簡単な解決策 |
---|---|---|---|
#4036 | マウントできない | udev syncが無効 | udev syncが有効なdaemonバイナリを使う |
#5684(Open) | daemon再起動後,既存コンテナをstartできない | 未解析(DeviceMapperとは関係ない?) | なし (daemon stop前にコンテナを全部手動で止める方法もあるが,耐障害性がない) |
バグとまでは言えないが懸念事項
- 遅い #10161
- ページが共有されない (DLLなどが重複して読み込まれる) http://comments.gmane.org/gmane.comp.sysutils.docker.devel/1384
結局どのファイルシステムがよいのか
実際の品質的にはいずれも似たり寄ったりで,どのファイルシステムが特別によいとは言えない.
コミュニティのサポート状況についても微妙であるが,devicemapperが多少ましかもしれない.Docker, Inc.としてはAUFSとdevicemapperが"production-ready"とのこと.
FS | サポート状況に関する注意点(2016/02/03時点) |
---|---|
AUFS | カーネルのメインラインにマージされていない.UbuntuとBoot2Dockerくらいでしか使えない.Ubuntuでも廃止予定. |
OverlayFS | RHELではOverlayFS自体がTech Preview扱い. |
BtrFS | DockerのBtrFSドライバはExperimental扱い.RHELではBtrFS自体がTech Preview扱い. |
コンテナの起動が遅くなっても良いなら,これらのCopy-on-Writeファイルシステムは使わず,VFSバックエンドを使うのが無難かもしれない.
いずれにせよ..
persistent data(及び,頻繁にアクセスする一時ファイル)はコンテナのファイルシステムにはおかず,外部ボリューム(-v
)に置くのが安心.
コンテナのファイルシステムは基本,リードオンリーな領域として考えるべき.
書き込みはあくまで使い捨て用途.