本篇是第五部分“存储篇”的第一篇,在这个部分,我将用三篇内容为你介绍 Docker 存储相关的内容,以及深入理解 Overlay2 存储驱动的工作原理。
通过前面“容器篇”和“镜像篇”的介绍,我们知道 Docker 容器可以近似理解为镜像的运行时实例,默认情况下也算是在镜像层的基础上增加了一个可写层。
所以,一般情况下如果你在容器内做出的修改,均包含在这个可写层中。
当容器被删除后,这些修改也就丢失了,因此有人会使用 docker commit
命令将在容器内做出的修改保存到新镜像中。
同时,由于容器间彼此独立,数据共享也是一个问题。如果想要传递数据(文件),一般都会使用 docker cp
等功能,完成数据的复制。
基于以上提到的情况,Docker 给我们提供了两种更简便的解决方案: volume 和 bind mount。其中的 volume 便是本篇的重点。
volume 简介
在正式开始介绍 Docker volume 的内容前,需要再次明确一下 volume 和 bind mount 的区别。
(MoeLove) ➜ ~ docker run --help |grep -E 'volume|mount'
--mount mount Attach a filesystem mount to the container
-v, --volume list Bind mount a volume
--volume-driver string Optional volume driv