对Docker存储驱动的评价

简介: 本文讲的是对Docker存储驱动的评价,【编者的话】Docker 的生态系统不断完善,上到容器的编排发布,下到网络存储,都有着各种选择。对于Docker 最底层的存储驱动,也有着Overlay、Zfs等选择,各有利弊,本文从一位使用者的角度对不同的驱动发表了自己的看法,仅供参考。
本文讲的是对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

我真的很希望你只是用于测试,否则你就是疯了。

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

driver-pros-cons.png

选自官方文档

原文链接:The Brutally Honest Guide to Docker Graphdrivers(翻译:覃璐)

原文发布时间为:2016-04-15
本文作者:qinlu1988
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:对Docker存储驱动的评价
目录
相关文章
|
关系型数据库 MySQL Linux
事项驱动的项目管理工具Dectask的Docker安装教程
Dectask是智能驱动的新一代项目协作工具,本人介绍其Docker安装教程。
348 2
|
数据可视化 开发工具 git
GitOps 驱动的 Docker Compose 可视工具化来了,图形化编辑器上玩转容器编排
Docker Compose 简化了多容器应用的部署,但随着应用复杂度上升,文本配置方式逐渐暴露出维护难、协作效率低等问题。基于 GitOps 的可视化 Docker Compose 工具应运而生,通过图形界面降低使用门槛,提升配置准确性和团队协作效率。结合 GitOps,实现配置变更的版本追踪、自动化部署与环境一致性,为多容器应用管理提供高效、安全的解决方案。
|
存储 Kubernetes Docker
|
存储 Linux Docker
使用Docker存储驱动
【10月更文挑战第9天】
584 3
|
存储 缓存 运维
【Docker 专栏】Docker 镜像的分层存储与缓存机制
【5月更文挑战第8天】Docker 镜像采用分层存储,减少空间占用并提升构建效率。每个镜像由多个层组成,共享基础层(如 Ubuntu)和应用层。缓存机制加速构建和运行,通过检查已有层来避免重复操作。有效管理缓存,如清理无用缓存和控制大小,可优化性能。分层和缓存带来资源高效利用、快速构建和灵活管理,但也面临缓存失效和层管理挑战。理解这一机制对开发者和运维至关重要。
1446 8
【Docker 专栏】Docker 镜像的分层存储与缓存机制
|
存储 Linux Docker
在Docker中,如何更改Docker的默认存储设置?
在Docker中,如何更改Docker的默认存储设置?
|
存储 数据管理 数据安全/隐私保护
【Docker专栏】Docker存储卷管理:数据持久化的关键
【5月更文挑战第7天】本文探讨了Docker容器中数据持久化的关键——存储卷,包括其独立于容器生命周期的特性、数据共享与迁移能力。Docker提供默认、命名、数据卷容器和挂载宿主机目录四种卷类型。创建与管理涉及`docker volume create`、`ls`、`run`等命令。最佳实践建议使用命名存储卷,定期备份,避免存储敏感数据,并清理未使用卷。了解和有效管理存储卷能提升容器灵活性和数据管理效率。
616 5
【Docker专栏】Docker存储卷管理:数据持久化的关键
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储
|
存储 测试技术 数据安全/隐私保护
docker 存储挂载比较
docker 存储挂载比较
|
存储 Linux Docker
CentOS7修改Docker容器和镜像默认存储位置
CentOS7修改Docker容器和镜像默认存储位置