Docker存储驱动之AUFS简介(2)

  如果想持久化这个配置,可以编辑你的Docker配置文件(如/etc/default/docker,虽然官方已经不建议使用该文件了),并加入--storage-driver=aufs选项到DOCKER_OPTS中。

# Use DOCKER_OPTS to modify the daemon startup options. DOCKER_OPTS="--storage-driver=aufs"

  重启docker daemon(systemctl restart docker.service)后,确认默认存储驱动是否配置成功:

$ docker info | grep "Storage Driver" Storage Driver: aufs 本地存储和AUFS

  当dockerd使用AUFS驱动时,驱动把镜像和容器存储在Docker host的本地存储下:/var/lib/docker/aufs。

镜像

  镜像层存储在/var/lib/docker/aufs/diff里。Docker 1.10之后,镜像对应的目录名称不再和镜像ID意义对应了。
  /var/lib/docker/aufs/layers/目录保存了元数据信息,这些元数据显示了image层是如何叠加的。该目录下的每个文件,对应了一个层,而这个文件的内容就是该层之下的层。如:

$ cat /var/lib/docker/aufs/layers/91e54dfb11794fad694460162bf0cb0a4fa710cfa3f60979c177d920813e267c d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82 c22013c8472965aa5b62559f2b540cd440716ef149756e7b958a1b2aba421e87 d3a1f33e8a5a513092f01bb7eb1c2abf4d711e5105390a3fe1ae2248cfde1391

  由于base layer之下不再有其它层,所有base layer对应的文件内容是空的。

容器

  运行中的容器映射在 /var/lib/docker/aufs/mnt/

$ ls /var/lib/docker/aufs/mnt/670e0053b2ba02ab33dc24daca293e200aa98e871cefec016a5cbf9d41b7cfbf bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

  容器的可写层存储在目录 /var/lib/docker/aufs/diff/,即使容器停止了,容器对应的目录依然存在。只有删除容器时,对应的目录才会删除。

AUFS在Docker中的性能

  对于PaaS层来说,AUFS存储驱动是一个很好的选择。因为AUFS有效地在多个运行容器中共享镜像,加速了容器启动时间,减少了容器使用的磁盘空间。
  AUFS在多个镜像层和容器间分享文件所使用的底层机制,高效地使用了系统的页缓存。
  同时,AUFS存储驱动也带来了一些容器写性能上的隐患。这是因为,容器第一次对任何文件的修改,都需要先定位到文件的所在的镜像层次,并拷贝到容器最顶层的读写层。尤其当这些文件存在于很底层,或者文件本身非常大时,性能问题尤其严重。

小结

  AUFS是Docker在Ubuntu/Debian中的默认存储驱动,虽然后面可能会被替换掉。但暂时来说,它完美地契合Docker的特性。并且,如何合理使用,其性能非常优异。另外,需要注意的是,AUFS对目录的重命名支持得不好,在编写程序时需要注意这点。

更多Docker相关教程见以下内容

Docker安装应用(CentOS 6.5_x64)

Ubuntu 14.04安装Docker 

Ubuntu使用VNC运行基于Docker的桌面系统 

阿里云CentOS 6.5 模板��安装 Docker

Ubuntu 15.04下安装Docker 

在Ubuntu Trusty 14.04 (LTS) (64-bit)安装Docker

在 Ubuntu 15.04 上如何安装Docker及基本用法

Ubuntu 16.04上Docker使用手记

Docker 的详细介绍请点这里
Docker 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c32a43c0fb6ea1546d264f87f30e4263.html