1.什么是容器数据库卷

  • 卷 就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。
    卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

将docker容器内的数据保存进宿主机的磁盘中。docker 将应用与运行的环境打包成镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的。
Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。为了能保存数据,在docker中我们使用卷。
【Docker】从零开始:12.容器数据卷-LMLPHP

2.数据的覆盖问题

如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。

  1. 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据
  2. 卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。

3.为什么要用数据卷

  • docker分层文件系统
    • 性能差
    • 生命周期与容器相同
  • docker数据卷
    • mount到主机中,绕开分层文件系统
    • 和主机磁盘性能相同,容器删除后依然保留
    • 仅限本地磁盘,不能随容器迁移

4.Docker提供了两种卷:

  1. bind mount
  2. Docker managed volume

5.两种卷的区别

【Docker】从零开始:12.容器数据卷-LMLPHP

6.bind mount

  • bind mount 是将主机上的目录或文件mount到容器里。 使用直观高效,易于理解。 使用 -v 选项指定路径,格式 [host path]:[container path]
  • bind mount必须指定host文件系统路径,限制了移植性。
docker run --rm -it -v [本地路径]:[Docker内路径] [images]

7.Docker managed volume

  • docker managed volume不需要指定mount源,docker自动为容器创建数据卷目录。
  • 默认创建的数据卷目录都在/var/lib/docker/volumes中。
  • 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。
  • 只能支持目录的挂载,不能支持文件的挂载
docker run --rm -it -v [卷名称]:[Docker内路径] [images]

volume 语法

docker volume [COMMAND]

volume 操作参数

11-29 07:44