Docker数据持久化的两种方案

1.绑定挂载的Volume:真实去存储数据,可以指定Volume位置(数据持久化)
2.bind mouting,指定一个共享目录(数据共享)

方案一:

案例:volume方案持久化数据

1.创建并启动mysql,密码设置为空

docker run -d --name mysql -e  MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql

2.查看所有的volume

docker volume ls

在这里插入图片描述

3.查看volume详细信息,可以找到具体目录

docker volume
docker volume inspect 060e1122454dae61d0ed7c6c8b2a07a1bd3746108e31e2d67e85656e8e36ddcf

在这里插入图片描述

4.停止并删除了mysql容器

docker stop mysql
docker rm mysql

5.再次查看目录,数据持久化成功

cd /var/lib/docker/volumes/
ls

在这里插入图片描述

6.volume默认存储名字不太好看

7.删除不被引用的volume (危险,通常情况下不会去删除

docker volume prune

8.创建容器,将容器中/var/lib/mysql目录下所有数据持久化

docker run -d -v mysql:/var/lib/mysql --name mysql -e  MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql

9.进入目录,查看数据

10.交互运行容器,进入mysql
在这里插入图片描述

11.创建database,退出mysql和容器
在这里插入图片描述

12.停止并删除mysql

docker stop mysql
docker rm mysql

13.创建一个新的mysql容器,使用之前的volume进行数据恢复

docker run -d -v mysql:/var/lib/mysql --name mysql -e  MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql

14.交互运行mysql,查看到数据已经恢复
在这里插入图片描述

方案二:bind mouting方案持久化数据

指定一个与容器同步的目录,容器或者目录变化,变化的内容都会同步

案例:

1.创建并进入一个目录

cd /home/nginx

2.编辑一个文件
在这里插入图片描述
3.编写Dockerfile

# 从远程仓库拉取nginx镜像
FROM nginx:latest
# 设置进入运行容器的目录
WORKDIR /usr/share/nginx/html
# 将文件拷贝至容器中命名为index.html
COPY index.html index.html

在这里插入图片描述

4.构建image

docker build -t nginx .

5.使用image启动容器

docker run -d -p 80:80 --name web nginx

6.目前还没有实现共享目录
在这里插入图片描述

7.删除容器并重新创建,开启并实现共享目录

docker run -d -v /home/nginx/:/usr/share/nginx/html -p 80:80 --name web nginx

8.在容器里创建test.txt
在这里插入图片描述

9.本地修改文件,容器内文件内容也更改了
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值