UnionFS (Unification File System) allows files and directories of separate file systems, known as branches, to be transparently overlaid, forming a single coherent file system. Contents of directories which have the same path within the merged branches will be seen together in a single merged directory, within the new, virtual filesystem. This reminds me of a [ChainMap](https://docs.python.org/3/library/collections.html#collections.ChainMap) in [[Python]]. Why is UnionFS necessary for [[Docker]]? I don't exactly know. Perhaps the most practical way to build on top of a base image is to use a union file system. A Dockerfile becomes a recipe for a UFS, and this is probably a very useful thing. > Docker supports several different UFS implementations, including AUFS, Overlay, devicemapper, BTRFS, and ZFS. Which implementation is used is system dependent and can be checked by running `docker info` where it is listed under "Storage Driver".