首页服务器Web服务器 docker 数据卷之进阶篇

docker 数据卷之进阶篇

笔者在《Docker 基础 : 数据管理》一文中介绍了 docker 数据卷(volume) 的基本用法。随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强。本文将在前文的基础…

笔者在《Docker 基础 : 数据管理》一文中介绍了 docker 数据卷(volume) 的基本用法。随着使用的深入,笔者对 docker 数据卷的理解与认识也在不断的增强。本文将在前文的基础上介绍 docker 数据卷的原理及一些高级用法。如果您想先了解 docker 数据卷的基本概念与用法,请先移步这里。

为什么需要数据卷?

这得从 docker 容器的文件系统说起。出于效率等一系列原因,docker 容器的文件系统在宿主机上存在的方式很复杂,这会带来下面几个问题:

  1. 不能在宿主机上很方便地访问容器中的文件。
  2. 无法在多个容器之间共享数据。
  3. 当容器删除时,容器中产生的数据将丢失。

为了解决这些问题,docker 引入了数据卷(volume) 机制。数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件系统的形式存在于宿主机中。数据卷的最大特定是:其生存周期独立于容器的生存周期。

使用数据卷的最佳场景

  1. 在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载同一个数据卷,从而共享数据卷中的数据。
  2. 当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。
  3. 当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。
  4. 当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。

docker volume 子命令

docker 专门提供了 volume 子命令来操作数据卷:
create 创建数据卷
inspect 显示数据卷的详细信息
ls 列出所有的数据卷
prune 删除所有未使用的 volumes,并且有 -f 选项
rm 删除一个或多个未使用的 volumes,并且有 -f 选项

先创建一个名称为 hello 的数据卷并通过 ls 命令进行查看:

docker,数据卷

然后可以使用 inspect 命令看看数据卷 hello 的详细信息:

docker,数据卷

在这里我们可以看到创建数据卷的时间;该数据卷使用的驱动程序为默认的 "local",表示数据卷使用宿主机的本地存储;数据卷的挂载点,默认是本机 /var/lib/docker/volumes 下的一个目录。

最后我们可以使用 rm 或 prune 命令删除数据卷,后面笔者会介绍一些实际使用中与数据卷的删除有关的一些实践。

使用 mount 语法挂载数据卷

之前我们使用 --volume(-v) 选项来挂载数据卷,现在 docker 提供了更强大的 --mount 选项来管理数据卷。mount 选项可以通过逗号分隔的多个键值对一次提供多个配置项,因此 mount 选项可以提供比 volume 选项更详细的配置。使用 mount 选项的常用

配置如下:

  1. type 指定挂载方式,我们这里用到的是 volume,其实还可以有 bind 和 tmpfs。
  2. volume-driver 指定挂载数据卷的驱动程序,默认值是 local。
  3. source 指定挂载的源,对于一个命名的数据卷,这里应该指定这个数据卷的名称。在使用时可以写 source,也可以简写为 src。
  4. destination 指定挂载的数据在容器中的路径。在使用时可以写 destination,也可以简写为 dst 或 target。
  5. readonly 指定挂载的数据为只读。
  6. volume-opt 可以指定多次,用来提高更多的 mount 相关的配置。

下面我们看个具体的例子:

$ docker volume create hello$ docker run -id --mount type=volume,source=hello,target=/world ubuntu /bin/bash
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/web/3611.html
上一篇浅谈Docker基础之数据管理
下一篇 浅谈Docker运行Tensorboard和jupyter的方法
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部