【docker的那些事】 volume持久化

前言

前面我们对docker的网络、Dockerfile以及仓库等相关都进行简单的介绍,docker技术在目前看来还非常的流行,那么随之带来的数据问题我们如何去解决?我们都知道在docker中像创建一些类似于redis、mysql等等容器相比较之前还是要简单的太多太多,那么在我们这么便捷的使用这些技术的同时,对于他的一些数据问题也应当去考虑考虑。

Volume

这篇文章我们以mysql来简单说明一下。

我们先来启动一个mysql容器。

docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD=root mysql

查看volume

docker volume ls

在这里插入图片描述
我们发现当我们运行了mysql容器之后,就会创建一个volume,其实每当我们运行任意一个container的时候,都会创建一个对应的volume,我们在来看看该volume的详细信息

docker volume inspect 5f58c2c333556f2a52b47c587c3d1120b2

在这里插入图片描述
在这里,我们注意一下圈出的部门,name表示我们当前的volume的名字,这里是随机生成的一个字符串,Mountpoint就是我们centos宿主机的一个地址,我们来看看是否存在该路径。

在这里插入图片描述
可以看到,在centos宿主机上,确实存在该路径,并且该路径下保存的文件我们应该就不陌生了吧。

有没有觉得上述生成的volume的名字太长,在实际使用中很难去记住,我们在自定义一个名字名字,我们将刚刚运行的container以及volume全部删除。

#停止container
docker stop $(docker ps -qa)
#删除
docker rm $(docker ps -a -qa)
#删除volume
docker volume rm $(docker volume ls)

重新运行一下

-v mysql01_volume:/var/lib/mysql表示将上述的volume起一个名字

docker run -d --name mysql01 -v mysql01_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql

在这里插入图片描述
在这里插入图片描述
真的能够持久化保存数据嘛?我们不妨也来尝试一下。

#进入容器中
docker exec -it mysql01 bash

#登录mysql
mysql -uroot -proot

#创建测试库
create database db_test;

#退出mysql服务,退出mysql container
exit

#删除mysql容器
docker rm -f mysql01

#查看volume
docker volume ls

#发现volume 还存在
DRIVER    VOLUME NAME
local     mysql01_volume

#新建一个mysql container,并且指定使用“mysql01_volume”,这里我的container的name仍然是mysql01,这个可以自行定义
docker run -d --name mysql01 -v mysql01_volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql

#进入容器,登录mysql,查看数据库
docker exec -it mysql01 bash
mysql -uroot -proot
show databases;

#可以发现db_test仍然存在

+--------------------+
| Database           |
+--------------------+
| db_test            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

那么这个目录他们是及时刷新的嘛?

这里我们可以也来进行一个简单测试,我们使用一个tomcat容器来测试。

来,先运行起来

docker run -d --name tomcat01 -p 9090:8080 -v /tmp/test:/usr/local/tomcat/webapps/test tomcat

在这里插入图片描述
这…虽然看不到tom猫,但是tomcat是可以访问的,这里不是重点先不管了。

先查看两个目录:

#主机:centos
cd /tmp/test/
#进入tomcat,查看tomcat容器
cd /usr/local/tomcat/webapps/test/

发现啥也没有,我们在主机的目录下新建一个test.html测试页面

<p style="color:blue;font-szie:20px;">Hello docker</p>

然后进入容器查看webapps下的文件,发现也多一个test.html页面,访问试试。

在这里插入图片描述
发现是可以,我们再去单独修改一下/tmp下的文件内容,看看是否及时刷新。

在这里插入图片描述
发现内容也会及时更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈橙橙丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值