目录
数据卷的作用
用来实现宿主机和容器之间的数据同步
以tomcat为例
1.docker 拉取tomcat8.0
#docker 拉取tomcat8.0
docker pull tomcat:8.0
2.绝对路径数据卷
#启动tomcat 容器 绝对路径
#创建文件夹
mkdir /home/tomcat
#创建临时容器
docker run -d -p 8083:8080 --name tomcat8083 tomcat:8.0
#复制容器文件到宿主机
docker cp <containerId>:/usr/local/tomcat/conf /home/tomcat
docker cp <containerId>:/usr/local/tomcat/webapps /home/tomcat
#删除docker容器 tomcat8083
docker rm -f tomcat8083
#重新创建容器并且添加容器卷
docker run -d -p 8083:8080 -v /home/tomcat/webapps:/usr/local/tomcat/webapps -v /home/tomcat/conf:/usr/local/tomcat/conf --name tomcat8083 tomcat:8.0
#启动完成后本地进入
cd /home/tomcat/webapps
touch test.txt
#进入容器查看文件在对应路径下是否存在
docker exec -it <containerId> /usr/local/tomcat/webapps
3.使用别名方式数据卷
使用别名的方式 ,别名可以存在也可以不存在,不存在docker会自动创建一个。
#启动容器
docker run -d -p 8083:8080 -v tomcat_webapps:/usr/local/tomcat/webapps -v tomcat_conf:/usr/local/tomcat/conf --name tomcat8083 tomcat:8.0
#打开文件夹路径
[root@localhost /]# find / -name tomcat_webapps /var/lib/docker/volumes/tomcat_webapps
看到数据已经全部同步过来
[root@localhost /]# cd /var/lib/docker/volumes/tomcat_webapps [root@localhost tomcat_webapps]# ls _data [root@localhost tomcat_webapps]# cd _data/ [root@localhost _data]# ls docs examples host-manager manager ROOT [root@localhost _data]# pwd /var/lib/docker/volumes/tomcat_webapps/_data
#创建文件验证
[root@localhost _data]# touch text01.txt
[root@localhost _data]# ls
docs examples host-manager manager ROOT text01.txt#进入容器
[root@localhost _data]# docker exec -it tomcat8083 /bin/bash
root@b60788eee32f:/usr/local/tomcat# cd webapps
root@b60788eee32f:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager text01.txt
4.数据卷相关指令
别名是docker自身维护的一个数据卷。
#可以查看docker本身维护的所有数据卷
docker volume ls
#如果要查看某个别名的路径信息
docker volume inspect
使用:docker volume inspect 别名 如下
[root@localhost _data]# docker volume inspect tomcat_conf [ { "CreatedAt": "2023-07-19T04:41:30+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/tomcat_conf/_data", "Name": "tomcat_conf", "Options": null, "Scope": "local" } ]
#创建一个数据卷
docker volume create testVolume
#查看一个数据卷
docker volume inspect testVolume
#删除一个数据卷
docker volume rm testVolume
5.注意点
5.1 必须在容器首次启动时候绑定
5.2 使用别名和绝对路径的方式的不同
别名:可以保持容器的初始数据。第一次使用时候会将容器中的原始数据保留下来
绝对路径:不会保留容器中的原始数据