Docker是一款流行的容器化技术,在Docker中,我们不仅能够快速创建、部署各种应用程序,还可以方便地管理其存储。本文将探索Docker存储的原理。
Docker使用了分层的存储模型。这种模型基于联合文件系统,其中每个容器都是通过多个文件系统层级构建出来的。
$ docker run -it alpine /bin/sh
上面的命令将启动一个Alpine Linux容器,并让用户交互地运行/bin/sh。当容器启动时,Docker将创建一个只读的文件系统,并将它作为底层层级。Docker还将为容器创建一个可写的层级作为容器的工作目录,容器运行时写入数据将存储在该层级中。
当我们修改了容器中的某些内容时,Docker不会对原始数据进行任何修改,而是创建一个新的只读层级。这个层级将包含修改后的数据。使用该层级,我们可以将当前容器版本与之前版本的区别存储在一起。这让我们可以使用快照技术创建轻量级的容器。
Docker还提供了多种存储驱动程序,包括AUFS(Advanced Multi-Layered Unification Filesystem)、OverlayFS等。这些驱动程序提供了不同的文件系统层级树构建方式。例如,AUFS使用分支(Branches)来支持多个只读层级合并,而OverlayFS使用原生的联合挂载(Mounting)功能来支持多个只读层级合并等。这些文件系统驱动程序被称为存储后端。
$ docker info
上述命令将显示有关Docker存储配置的信息,包括使用的存储后端以及所有可用的存储驱动程序。
总之,在Docker中,存储层级模型是使用联合文件系统实现的,每个容器都有一个只读的基础文件系统和一个可写的工作层级。存储驱动程序在文件系统层级的创建和管理方面起重要作用。