为什么使用AUFS作为默认的Docker存储后端而不是devicemapper?
Project Atomic对Docker 存储后端的描述描述了AUFS与其他存储后端select(如devicemapper)之间的技术差异。 AUFS不在上游Linux内核中。 为什么selectAUFS作为默认存储后端(例如在Ubuntu的Docker中)? AUFS的某些技术属性是否使得它比存储后端(如devicemapper)更好,而这似乎是由未修补的Linux内核支持的?
AUFS只是系统/分发版的默认存储后端。 否则,devicemapper是默认的。 例如,Ubuntu 14.04默认为devicemapper:
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS" $ docker info | grep Storage Storage Driver: devicemapper
这在Docker 0.7.0中发生了变化。 在0.7.0之前,Docker依靠AUFS作为其唯一的存储驱动程序,这就是为什么它是早期版本Ubuntu的默认设置。
我远离文件系统的专家,但Discourse的人, 强烈推荐使用AUFS,而不是DeviceMapper 。 使用DeviceMapper可能会导致“一个痛苦的世界”。
Docker文档说:
aufs驱动程序是最老的,但基于Linux内核补丁集,不太可能被合并到主内核中。 这些也会导致一些严重的内核崩溃。
我在Ubuntu 16.04上用默认的内核在Docker 17.06.2〜ce-0〜ubuntu上发生了内核崩溃。
我在ext4文件系统上使用overlay2
; Docker现在工作正常。