Docker——持久化(Volume)
程序员文章站
2022-05-11 23:00:34
...
持久化数据
- 基于本地文件系统的Volume:在执行docker create 或 docker run 时,通过 -v 参数将主机的目录作为容器的数据卷
- 基于 plugin的Volume:支持第三方的存储方案。如:NAS、aws
Volume
卷是存储Docker容器生成和使用的数据的首选机制。绑定挂载依赖于主机的目录结构,而卷则完全由Docker管理。
Volume类型
- 受管理的 data Volume,由 docker 后台创建
- 绑定挂载的Volume,具体挂载位置由用户指定
Volume 的使用
在 docker run 或 docker creat通过 -v 参数来使用
例如:
docker run -d -v mysql:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=123456,MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7.29
命名 Volume 为 mysql 的名字,与容器内 /var/lib/mysql 此地址进行数据的绑定。
-v mysql:/var/lib/mysql
由三个字段组成,以冒号(:)分隔。这些字段必须以正确的顺序排列,并且每个字段的含义不是立即显而易见的。
- 对于命名卷,第一个字段是卷的名称,在给定的主机上是唯一的。对于匿名卷,将省略第一个字段。
- 第二个字段是文件或目录在容器中的安装路径。
- 第三个字段是可选的,并且是逗号分隔的选项列表,例如 ro 。这些选项将在下面讨论。
Volume 的查看
[[email protected] ~]# docker volume ls
DRIVER VOLUME NAME
local mysql
docker volume
命令:
create 创建卷
inspect 显示一个或多个卷上的详细信息
ls 列表卷
prune 删除所有未使用的本地卷
rm 删除一个或多个卷
Bind Mouting
docker run -d -v /home/mysql:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=123456,MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7.29
和 Volume 的区别就是 mysql 卷名换成了==/home/mysql== 服务器固定文件地址
与 Bind Mouting 相比,Volume 具有几个优点:
- 与绑定安装相比,卷更易于备份或迁移。
- 您可以使用Docker CLI命令或Docker API管理卷。
- 卷在Linux和Windows容器上均可工作。
- 可以在多个容器之间更安全地共享卷。
- 卷驱动程序使您可以将卷存储在远程主机或云提供程序上,以加密卷内容或添加其他功能。
- 可以通过容器预先填充新卷的内容。
上一篇: Docker数据持久化