一、概述
docker 容器数据卷是容器在运行过程中持久化数据的一种方式,卷是目录或文件,存在于一个或多个容器中,由docker 挂载到容器,但不属于联合文件系统,因此能够绕过Union File System 提供一些用于持续存储或共享数据的特性;卷的设计目的就是数据持久化,完全独立于容器的生命周期,因此docker不会在容器删除时,删除其挂载的数据卷。
特点:
- 数据卷可在容器之间共享或重用数据。
- 卷中的更改可以直接生效。
- 数据卷中的更改,不会包含在镜像中的更新。
- 数据卷的生命周期一直持续到没有容器使用它为止。
二、 容器数据卷添加
2.1、直接命令添加
docker run -it -v /宿主机绝对路径:/容器内目录:权限 镜像名权限: ro (readonly容器只能查看)权限: rw (容器内可读可写)#例子:启动Tomcat容器,执行完此命令后我们已经启动一个tomcat。并且宿主机的/home/webapps目录和容器中的/usr/local/tomcat/webapps 目录相关联,当这两个目录中的文件会互相同步docker run -d -p 8080:8080 --name tomcat-v -v /home/webapps:/usr/local/tomcat/webapps tomcat#此时可以通过 docker inspect 命令查看挂载信息,可以看到binds或者mounts属性有该关联信息#格式:docker inspect 容器ID
2.2.1、匿名挂载和具名挂载
所有的docker容器内的卷,没有指定目录的情况下都是再 /var/lib/docker/volumes/xxx/_data 下我们通过具名挂载可以方便找到一个卷,所以大部分情况下都是使用具名挂载如何确定具名和匿名挂载:-v 容器内的路径 #匿名挂载-v 卷名:容器内的路径 #具名挂载-v /宿主机的路径/容器内的路径 #具名挂载#docker volume ls:查看所有挂载的卷,返回卷名#docker volume inspect 容器卷名 #查看一下某个卷的具体信息
2.2、docker file 添加
在dockerfile里通过命令··VOLUME [“/dataVlolumeContainer1”,”/dataVlolumeContainer1”]·· 可以创建目录
三、数据卷容器
docker run -it --name 容器1名称 --volumes-from 来源容器名称 启动的镜像名/镜像ID#这样可以实现容器1内的文件和来源容器的文件路径下的内容一致,从而实现容器间的数据共享#只要其中一个容器还在,数据就还在,不会因为其中一个容器被删除了数据就丢失的情况#容器之间的配置信息传递,容器卷的生命周期一致持续到没有容器使用为止,但是一旦数据持久化到了本地,本地的数据是不会删除的
