Java学习之Docker数据卷
一、什么是容器数据卷
docker的理念回顾
将应用和环境打包成一个镜像!
数据?如果数据都在容器中,那么我们容器删除,数据将会丢失!需求:数据可以持久化
MySQL,容器删了,删库跑路!需求:MySQL数据可以存储到本地!
容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!
这就是卷技术,目录的挂载,将我们容器内的目录挂载到Linux上。
总结:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录,容器内目录
测试:
[root@master /]$ cd /home/
[root@master home]$ ls
lql test.txt
[root@master home]$ cd lql
[root@master lql]$ ls
test.txt
[root@master lql]$ docker run -it -v /home/lql/:/home centos /bin/bash
[root@2c91257d1d5c /]$ cd home
[root@2c91257d1d5c home]$ ls
test.txt
# 此时另开一个窗口
root@172.16.211.11's password:
Last login: Tue Dec 19 16:23:54 2023 from 172.16.211.1
[root@master ~]$ cd /home/lql
[root@master lql]$ ls
test.txt
[root@master lql]$ vim docker.txt
[root@master lql]$ ls
docker.txt test.txt
# 回到第一个窗口
[root@2c91257d1d5c home]$ ls
docker.txt test.txt
使用docker inspect命令查看容器的相信信息
注意:数据卷是双向绑定的,如果容器内创建文件, 也会同步到本地Linux服务器中。
# 这是在容器内
[root@2c91257d1d5c home]$ vi 1.txt
[root@2c91257d1d5c home]$ ls
1.txt docker.txt test.txt
# 这是在Linux服务器中
[root@master lql]$ ls
1.txt docker.txt test.txt
注意:当容器处于停止状态,也会进行数据同步。
[root@2c91257d1d5c home]$ exit
exit
[root@master lql]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@master lql]$ ls
1.txt docker.txt test.txt
[root@master lql]$ touch 2.txt
[root@master lql]$ ls
1.txt 2.txt docker.txt test.txt
# 开启容器查看数据是否同步成功
[root@master lql]$ docker start 2c91257d1d5c
2c91257d1d5c
[root@master lql]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c91257d1d5c centos "/bin/bash" 2 hours ago Up 4 seconds optimistic_lamarr
[root@master lql]$ docker attach 2c91257d1d5c
[root@2c91257d1d5c /]$ cd home
[root@2c91257d1d5c home]$ ls
1.txt 2.txt docker.txt test.txt
优点:我们以后修改只需要在本地修改即可,容器内会自动同步!