为什么使用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可能会导致“一个痛苦的世界”。

为什么使用DeviceMapper的话语太糟糕了

Docker文档说:

aufs驱动程序是最老的,但基于Linux内核补丁集,不太可能被合并到主内核中。 这些也会导致一些严重的内核崩溃。

我在Ubuntu 16.04上用默认的内核在Docker 17.06.2〜ce-0〜ubuntu上发生了内核崩溃。

我在ext4文件系统上使用overlay2 ; Docker现在工作正常。