Docker 存储驱动程序控制图像和容器在文件系统上的存储方式。它们是允许您创建映像、启动容器和修改可写层的机制。以下是每个驱动程序之间的差异以及应该使用它们的情况。
什么是存储驱动程序?
活动存储驱动程序确定 Docker 如何管理您的图像和容器。可用的驱动程序实现了处理图像层的不同策略。根据手头的存储场景,它们将具有独特的性能特征。
存储驱动程序本质上与容器的“可写层”相关联。这个术语指的是容器文件系统的最顶层,您可以通过运行命令、写入文件和在运行时添加软件来修改它。
尽管持久的 Docker 容器数据应该始终存储在卷中,但容器自身文件系统的更改通常是不可避免的。您可能正在编写临时文件、将环境变量存储到配置文件中或缓存数据以供以后参考。
这些操作都会导致正在运行的容器的文件系统与其镜像定义的文件系统发生偏差。您选择的存储驱动程序会处理差异并应用差异。
启动容器时会发生什么?
当一个新容器启动时,Docker 首先拉取通过构建其 Dockerfile 创建的镜像层。这些层存储在您的主机上,因此您无需再次拉取图像,直到您想要获取更新。作为拉取过程的一部分,Docker 将识别并重用它已有的层,避免冗余下载。
一旦镜像层可用,Docker 将启动容器并在顶部添加一个额外的层。这是容器可以修改的可写层。所有较低的层都是不可变的,并且源自它们的 Dockerfile 定义。