一.Docker持久化数据的方案
- 基于本地文件系统的Volume:可以在执行docker create或docker run时,通过-v参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的volume管理。
- 基于plugin的Volume:支持第三方的存储方案,比如NAS,aws
1.Volume的类型
- 受管理的data Volume,由docker后台自动创建
- 绑定挂载的Volume,具体挂载位置可以由用户指定
二.数据持久化:Data Volume
1.操作流程
- 注意:mysql的Dockerfile中由
VOLUME ["/var/lib/mysql"]
指定了持久化的路径,此路径是要被持久化的路径,默认volume的名称为local - 执行
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
启用一个mysql的image容器,其中-v
后跟的mysql表示volume别名,冒号后面的路径为volume本地存储的地址 - 查看
sudo docker volume ls
查看docker的volume,会发现自动生成了一个volume - 通过
sudo docker volume inspect volume的NAME值
查看对应volume的详情信息 - 如果希望删除volume,则可以使用
sudo docker volume rm volumeNAME
2.恢复volume数据
- 上述操作后会将数据存储到/var/lib/mysql中,我们可以对container中的mysql数据进行增删改查操作
- 通过
sudo docker rm mysql1
移除container - 此时查看/var/lib/mysql路径仍然存储volume
- 我们可以使用
sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql
再次开启一个container,此时的volume会延用之前的数据实现数据的恢复
三.数据持久化:Bind Mounting
1.与Data Volume的区别
- Data Volume需要在Dockerfile中定义要创建的volume
- Bind Mounting是在运行时指定本地目录与容器中目录的一一对应关系即可
docker run -v /home/aaa:/root/aaa
来源:https://blog.csdn.net/qq_34829447/article/details/85563389