欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker——持久化(Volume)

程序员文章站 2022-05-11 23:00:34
...

持久化数据

官方说明

  • 基于本地文件系统的Volume:在执行docker createdocker run 时,通过 -v 参数将主机的目录作为容器的数据卷
  • 基于 plugin的Volume:支持第三方的存储方案。如:NAS、aws

Volume

官方 Volumes

卷是存储Docker容器生成和使用的数据的首选机制。绑定挂载依赖于主机的目录结构,而卷则完全由Docker管理。

Volume类型

  • 受管理的 data Volume,由 docker 后台创建
  • 绑定挂载的Volume,具体挂载位置由用户指定

Volume 的使用

docker rundocker 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