数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷一直存在,知道没有容器使用
一、命令方式创建
命令创建,可以让容器和宿主机之间数据共享
在docker run命令的时候,使用-v标记可以在容器内创建一个数据卷。多次使用-v标记可以创建多个数据卷。
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it -v /myDataVolume:/dataVolumeContainer 镜像名
docker run -it -v /myData1:/myDate1 -v /myData2:/myDate2 镜像名 --创建两个目录
docker run -it -v /myDataVolume:/dataVolumeContainer:ro 镜像名 --添加权限,容器目录只可以读
-
1.首先获取tomcat镜像
docker pull tomcat
-
2.在启动的时候使用-v标记
docker run -d -v /myTomcat:/usr/local/tomcat/webapps/myTomcat -p 8888:8080 tomcat
myTomcat:宿主机绝对路径目录,如果没有myTomcat目录,会自动创建
/usr/local/tomcat/webapps/myTomcat :容器内目录 ,如果不存在会自动创建
注意:宿主机下的目录和容器内的目录如果提前创建,并有内容,在-v标记的时候会清空目录查看数据卷是否挂载成功:
docker ps --查看容器id docker inspect 容器id
-
3.测试
进入宿主机/myTomcat目录,查看,并创建test.txt文件
进入容器,查看/usr/local/tomcat/webapps/myTomcat下是否有test.txt
docker exec -it a3eda35e1887 /bin/bash
此时说明宿主机和容器,数据共享成功
二、编写dockerFile方式
-
1.在根目录下新建mydocker文件夹并进入
-
2.编写dockerFile
vim testFile # volume test FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,---------success1" CMD /bin/bash
-
3.执行 docker build -f
docker build -f /mydocker/testFile -t zl/centos .
docker images 查看新镜像
-
4.查看信息
docker run -it zl/centos --运行 docker inspect 容器id 命令查看宿主机默认与dataVolumeContainer1、dataVolumeContainer2关联的目录
此时可以进入source下的目录去创建文件,校验一下有没有数据同步