转载

Docker 存储驱动的个人看法

编者的话

Docker 的生态系统不断完善,上到容器的编排发布,下到网络存储,都有着各种选择。对于Docker 最底层的存储驱动,也有着overlay、zfs等选择,各有利弊,本文从一位使用者的角度对不同的驱动发表了自己的看法,仅供参考。

温馨提示,本文的所有观念谨代表个人看法,所以不要因为你不同意我,就在Hacker News 上和我争论。我可以不那么公正,因为这是我自己的看法。

很坦率的说,我认为每种Docker 存储驱动都不好用,所以你要决定哪一种最适合你。没有完美的选择,每一个都有缺陷,我会展示出来。开始吧。

  • Overlay
    Overlay 在内核3.18中被加入。这很重要,因为如果你在3.18之前的内核上运行,你会:
    1. 不是运行的同样的Overlay;
    2. 运行在带有overlay 补丁的内核上,也就是我们说的“改造内核”。改造内核不可信。这不是说它行不通,它可能工作的很好,但是不可信。
    Overlay 很棒,但是你需要一个最新的内核。也有一些关于socket 和python 包的令人费解的内核bug,参见 docker/docker#12080 。我个人使用overlay,没有遇到过这些bug,我所有的100多个dockerfile 使用overlay在服务器上运行持续构建,它们运行正常。
  • Aufs
    Aufs 也很棒。但是默认情况下它不在内核中。在Ubuntu/Debian 发行版中很容易作为内核扩展包安装,但是在其他发行版中它可能没那么简单。
  • Btrfs
    Btrfs 也很棒,但是你首先需要对 /var/lib/docker 使用的硬盘进行分区。这是一道坎,我想很多人不会这样做。
  • Zfs
    Zfs 还不错,当然,就像Btrfs一样,它需要一些配置,并安装 zfs.ko 到系统中。如果Ubuntu 16.10 默认支持zfs,它会变得更加流行。
  • Devicemapper
    老实说这让我很失望,但是你要当心。再加上,它存在内核中。你一定要完美的配置所有的 devicemapper 选项 ,否则你会发现你只能运行2个左右的容器。
    让我告诉你一个故事。
    我妈妈曾经询问她朋友著名的鸡肉卷菜谱,这样她能自己做。朋友给了她菜谱,但是漏了一项关键原料,以至于我的妈妈从来都没有做出正确的味道。总是有什么东西不对劲。
    这就是我对devicemapper 的想法。
    它适用于RedHat。
  • Vfs
    我真的很希望你只是用于测试,否则你就是疯了。

这就是全部,感谢你的阅读。

Docker 存储驱动的个人看法

(选自官方文档)

原文  http://dockone.io/article/1218
正文到此结束
Loading...