1、容器与宿主机

首先找到docker的工作目录:/var/lib/docker
在这里插入图片描述
volumes目录下
在这里插入图片描述
启动一个tomcat容器

docker run -d -p 8080:8080 -v tomcat:/user/local/tomcat/webapps --name tomcat_volume tomcat

1、如果使用的数据卷不存在,也就是/var/lib/docker/volumes没有tomcat会自动创建
将容器内部/user/local/tomcat/webapps挂载到docker工作目录(也就是/var/lib/docker/volumes)
现在再看一下volumes目录
在这里插入图片描述
是在_data目录下进行映射的
在这里插入图片描述
在这里插入图片描述
原本不使用数据卷启动tomcat容器后的webapps下应该是有这些东西的
在这里插入图片描述
启动的时候使用了数据卷,会把容器中对应目录的数据清除(因为volumes下没有tomcat目录)
2、如果使用的数据卷已经存在,那么会直接把数据映射到容器对应的路径下
启动容器之前创建好
docker volume xx
在这里插入图片描述
docker volume create test:创建test数据卷,其实就是在docker工作目录volumes下创建一个test目录,并在里面在创建一个_data空目录
在这里插入图片描述
在启动容器前在_data下创建好文件:创建一个ROOT目录并在里面创建一个index.html文件
在这里插入图片描述
重新启动一个新的tomcat容器:
在这里插入图片描述
直接将创建好的容器卷下_data中的文件映射到容器内对应路径下

2、容器与容器之间

同样是使用数据卷
首先启动第一个容器并使用数据卷

docker run -d --name tomcat01 -v test:/user/local/tomcat/webapps tomcat

启动第二个容器时使用–volumes-from xxx共享数据卷

docker run -d --name tomcat02 -v test:/user/local/tomcat/webapps tomcat

此时两个容器使用同一个数据卷test(对应容器内/user/local/tomcat/webapps目录)
在test卷中添加一个文件
在这里插入图片描述
进入tomcat01容器查看
在这里插入图片描述
进入tomcat02查看
在这里插入图片描述
两个容器共享数据卷,如果在tomcat01中挂载了多个数据卷,启动tomcat2时使用了--volumes-from tomcat02tomcat2会共享tomcat01中的数据卷

如果将tomcat01删除tomcat02中的仍然会共享数据卷,数据不会消失

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐