小言_互联网的博客

Docker数据卷

334人阅读  评论(0)

接上一篇:Docker应用
1.为什么需要数据卷?⊙ω⊙

上一篇中使用docker cp命令把ssm.war文件复制到tomcat容器内部的webapps路径下,然后就可以运行部署到容器中的ssm项目。

现在我们使用数据卷,数据卷可以帮我们把宿主机的内容映射到容器内部,就是我不用把ssm.war文件复制到容器内部,使用映射后,如果修改宿主机中的这个文件,容器内部的这个文件也会一起发生改变
看这篇总结:Docker数据卷
Docker容器数据卷详解
Docker数据卷详解
♦️ 1.创建数据卷

docker volume create 数据卷名称

#创建数据卷之后
默认会存放在一个目录下:
/var/lib/docker/volumes/数据卷名称/_data


如上图创建一个数据卷,名称为tomcat
cd命令切换到/var/lib/docker/volumes/tomcat下
ls查看可以看到:_date
映射的内容就会被放到这个_date目录下

♦️2. 查看数据卷的详细信息

docker volume inspect 数据卷名称


可以看到,输出的是一个json字符串,里面包括了创建时间CreatedAt,挂载点Mountpoint,数据卷名称Name

♦️3.查看全部数据卷

docker volume ls

♦️4.删除数据卷

docker volume rm 数据卷名称

♦️5.应用数据卷

当你映射数据卷时,如果数据卷不存在。Docker会帮你自动创建

docker run -v 数据卷名称:容器内部的路径 镜像id

直接指定一个路径作为数据卷的存放位置。

docker run -v 路径:容器内部的路径 镜像id


如上图docker ps查看所有运行的容器,发现有tomcat和MySQL,现在我们把tomcat容器停止运行docker stop fe,并且把它删除docker rm fe

如上图发现tomcat容器已经被关闭了,现在我们来新建一个数据卷:volume_ssm_ tomcat
数据卷已经创建过了,我们可以直接docker run命令:在创建容器的同时,把数据卷映射到容器内部
,这里我们新建tomcat容器,把数据卷映射到tom had容器的webapps目录下

上图中出现了一个docker run新的参数-v
该命令就是挂载数据卷。
上图,绿色方框中
🔹volume_ssm_ tomcat是刚刚新建的数据卷

🔹/usr/local/tomcat/webapps是容器内部的webapps目录

♦️查看数据卷volume_ssm_ tomcat

[rootelocalhost ~]# cd /var/lib/docker/volumes/volume_ssm_tomcat/
[root@localhost volume_ssm_tomcat]# ls
 _data
[root@localhost volume_ssm_tomcat]# cd _data/
[root@localhost _data]# ls
docs examples host-manager manager ROOT 
[root@localhost _data]#pwd
/var/lib/docker/volumes/volume_ssm_tomcat/_data
[root@localhost _data]# cd ~
[root@localhost ~]# cp ssm.war /var/Lib/docker/volumes/volume_ssm_tomcat/_data
[root@localhost ~]#

cd /var/lib/docker/volumes/volume_ssm_tomcat/切换到数据卷目录下
cd _data/被映射的文件将会保存在数据卷目录下的_date文件夹中
ls查看,发现现在_date目录下有与tomcat容器中相同的目录文件

pwd查看当前项目路径为
/var/Lib/docker/volumes/volume_ssm_tomcat/_data,现在就可以把ssm.war复制到这个目录下
接下来切换到根目录:cd ~
cp命令把根目录下的ssm.war复制到数据卷的_data目录下

cp ssm.war /var/Lib/docker/volumes/volume_ssm_tomcat/_data

现在

♦️打开浏览器输入
https://192.168.199.10:8080/ssm(与Xterm中一致IP地址,加上我项目的访问路径)
就可以运行部署到容器中的ssm项目

如果遇到浏览器访问不到192.168.199.10!!
解决办法:

vi /etc/sysctl.conf

键入i大写G到文件最后一行,然后添加代码net.ipv4.ip_forware=1,然后按下esc键,再输入:wq保存并退出

输入

systemctl restart network

就可以运行了


(图片上访问的是8081端口,根据docker run命令的-p参数)

我们可以发现ssm.war并没有cp命令把项目到war包复制到Tomcat容器的webapps目录下,而是复制到
挂载到tomcat容器的数据卷volume_ssm_ tomcat上,通过数据卷,让
本地的路径
容器中的路径做了映射,同样也可以实现部署。

♦️删除容器,数据卷不会被删除

docker ps查看所有运行的容器
根据容器id :container id =85开头停止容器并删除
docker stop 85
docker rm 85
再去/var/Lib/docker/volumes/volume_ssm_tomcat/_data路径下,发现数据卷还在


转载:https://blog.csdn.net/m0_47010003/article/details/127832762
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场