docker系列五之数据卷(volumn)

docker数据卷(volumn)

一. 为什么需要数据卷

  docker镜像是由多个文件系统(只读层)叠加而成,当我们启动一个容器的时候,docker的服务端会加载镜像的只读层,并在最顶层创建一个可读写层。当运行的容器修改现有的文件,该文件会从只读层拷贝到读写层,其实并没有影响到镜像本身,依然存在于镜像中。当我们删除掉容器,容器运行时的数据都会丢失,当我们通过镜像重新run一个容器,该容器还是会回到最初的状态。那么问题来了,我们该如何保存我们运行中的数据了?这个问题有两种解决方法:a. 我们可以定期的将我们的容器通过commit的方式生成一个镜像;b.通过数据卷来实现。很明显我们不可能不停的commit来生成镜像,有些朋友可能会说你这么说的意思是通过数据卷来实现呗,可我都不知道什么是数据卷,怎么知道它好用了?那么接下来我们就开始来介绍数据卷。

二. 什么是数据卷

  数据卷就是容器内部的数据目录直接映射到宿主机上的目录上,无论在宿主机还是容器内对数据的修改在另外一方都是可见的。

三.数据卷的使用

3.1命令的使用

  我们还是通过前面篇章中使用的centos镜像来讲解,其实也就一个命令,我们的工作也就是围绕着该命令来讲解:docker run -it -v /dataVolumn:/containerDataVolumn centos

                                                

                                                

  至于其他的命令笔者在这里不作过多的解释,只解释一下 -v /dataVolumn:/containerDataVolumn 这个命令的意思,-v是绑定将容器中的目录挂载到宿主机的目录上,/dataVolumn:/containerDataVolumn中冒号前的路径是指自动在宿主机上创建的目录名(不用我们手动去创建),冒号后的路径是指在容器中自动创建的目录名。

 3.2 数据卷的测试

  我们前面提到过“论在宿主机还是容器内对数据的修改在另外一方都是可见的”,那么本小节我们回来测试这个问题。

  A. 我们在容器中 /containerDataVolumn 目录下创建一个container.txt文件,并写入内容,命令:echo "hello world" > container.txt

                                                

  在宿主机的 /dataVolumn目录下会查看到有container.txt文件,并查看内容,如下图所示:

                                                

  B. 在宿主机的 /dataVolumn目录下新建 host.txt文件,并写入内容,命令为:echo "welcome" > host.txt

                                               

  在容器的/containerDataVolumn目录下会看到host.txt文件,并查看内容,如下图所示:    

                                                    

  B. 删除掉容器,查看宿主机 /dataVolumn目录,文件并没有丢失

                                              

 

猜你喜欢

转载自www.cnblogs.com/miller-zou/p/11104198.html