美文网首页
14. Docker引擎 - Docker与AUFS实践

14. Docker引擎 - Docker与AUFS实践

作者: yi_zhe | 来源:发表于2017-01-01 12:14 被阅读0次

AUFS是Docker最早支持的, 非常稳定, 在生产环境大量部署, 有强大的社区支持
它让

  • 加快了容器的启动时间
  • 高效地使用存储
  • 高效的使用内存

但有部分Linux发行版不支持它, 因为它并没有进入Linux内核

镜像分层与AUFS共享

AUFS是一个联合文件系统, 它将Linux上的多个目录互相叠加起来, 提供一个统一的视角, AUFS使用union mount 实现这些功能.
AUFS通过一个挂载点, 将多个目录叠加起来, 使用一个统一的视角暴露出来.

使用AUFS的容器读写

AUFS在文件层面上进行操作, 所以哪怕一个文件只需修改一小部分, 整个文件都会被复制, 如果修改的文件很大或者处于较低的镜像层级, 那么将会带来显著的性能影响.(只在一个文件第一次修改时会发生搜索和拷贝, 拷贝到容器层后就可以写了)

使用AUFS驱动删除文件

AUFS存储驱动通过在容器层放一个whiteout file实现文件的删除. whiteout file会使只读镜像中的被覆盖的文件变得模糊不清(删除).

Paste_Image.png

使用AUFS重命名目录

调用rename系统调用时, 如果目录是非空的, 那么将返回错误EXDEV(cross-device link not permitted), 所以应用程序需要处理EXDEV.

Docker中配置AUFS

通过下面命令查看系统是否支持AUFS

grep aufs /proc/filesystems
nodev aufs

有上面输出, 说明支持, 否则不支持. 如果支持可以通过传递--storage-driver=aufs给dockerd使用AUFS. 上节已经写了配置过程.

本地存储与AUFS

  • 镜像
    • /var/lib/docker/aufs/diff/
      镜像的层及其内容存放的目录
    • /var/lib/docker/aufs/layers/
      存储关于镜像和层叠放的元数据
  • 容器
    • /var/lib/docker/aufs/mnt/<container-id>
      正在运行的容器的挂载目录, 如果没有运行, 那么目录仍存在, 但是是空目录
    • /var/lib/docker/containers/<container-id>
      容器的元数据和各种配置文件存放的位置
    • /var/lib/docker/aufs/diff/
      存储容器的可写层, 当容器被删除时, 存放在此的可写层也被删除了

AUFS与容器性能

  • 对于PaaS是一个很好的选择, 能够高效复用镜像节省磁盘空间, 快速启动容器
  • AUFS的底层机制使得可以高效的使用系统的页缓存
  • 第一次修改大文件(或处于底层的镜像中的文件)会造成显著的性能影响

AUFS的兼容性

不支持rename系统调用

相关文章

  • 14. Docker引擎 - Docker与AUFS实践

    AUFS是Docker最早支持的, 非常稳定, 在生产环境大量部署, 有强大的社区支持它让 加快了容器的启动时间 ...

  • aufs

    aufs学习 docker可以借助多种driver完成镜像的存储,包括aufs、devicemapper、over...

  • Docker存储

    docker支持的graphdriver aufs (ubuntu) overlayfs (CoreOS) dev...

  • Docker学习(5) Docker引擎

    Docker学习(5) docker引擎 Docker引擎——简介 docker引擎是用来运行和管理容器的。 基于...

  • Docker 入门

    1 Docker安装 参照官方文档,本篇基于Ubuntu 14.04AUFS存储为了让 Docker 使用 auf...

  • ubuntu snap docker服务器断电启动失败

    使用snap在ubuntu上安装docker。某次异常断电之后,docker异常无法重启,查看系统日志: aufs...

  • Docker常用命令学习

    启动docker引擎 重启docker引擎 查看docker版本 docker镜像常用操作查看本地所有镜像 其中R...

  • docker入门

    docker入门 容器引擎将会越来越成为主流 ,而Docker,就是容器引擎中的佼佼者,并且已经得到了广泛的实践和...

  • 镜像推送时出现 server gave HTTP respons

    (1)原因分析 因为 Docker 引擎默认通过 https 协议与 Docker Registry 通信,所以如...

  • 15. Docker引擎 - Docker与Btrfs实践

    Btrfs是下一代写时复制文件系统, 支持很多高级存储技术, 使得它非常适合Docker, Btrfs在Linux...

网友评论

      本文标题:14. Docker引擎 - Docker与AUFS实践

      本文链接:https://www.haomeiwen.com/subject/gzfivttx.html