一篇搞定Docker数据卷及其配置

这篇具有很好参考价值的文章主要介绍了一篇搞定Docker数据卷及其配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:
😄作者简介:小曾同学.com,小伙伴们也可以叫我小曾,一个致力于测试开发的博主⛽️
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

1 写在前面

前段时间给小伙伴们分享了 Docker 相关理论介绍及基本命令的详解,今天主要想给大家分享 Docker 数据卷及其配置。
在开始分享之前先抛出三个小问题:

  1. Docker 容器删除后,在容器中产生的数据还在吗?

  2. Docker 容器外部机器可以直接交换文件吗?

  3. 容器之间怎么进行数据交互

以上的三个问题都可以使用数据卷来解决,那什么是数据卷呢,接下来正式开启本篇内容。

2 数据卷的概念

数据卷是宿主机中的一个目录或文件。就是将容器内的目录和宿主机中的目录进行挂载,其中宿主机中的目录就被称为数据卷。

3 数据卷的作用

我们知道了数据卷是宿主机上的一个目录或者文件,那么这个目录或者文件可以做什么呢?可以概括为三点:

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间可数据交换

当容器目录和数据卷目录绑定后,任意一方的修改都会立即同步,也就是说,当容器目录中的内容发生变化时,数据卷目录也会跟着变化;当数据卷目录中的内容发生变化时,容器内目录也会发生变化。

当然,一个数据卷可以被多个容器同事挂载;一个容器也可以被挂载多个数据卷.

4 如何配置数据卷

4.1 配置单个数据卷

创建启动容器时,使用 -v 参数设置数据卷

docker run -it -v /宿主机目录绝对路径:/容器内目录路径 --name="xx" 镜像名  —privileged=true

注意事项:

1)目录必须是绝对路径

2)如果目录不存在,会自动创建

3)一个容器可以挂载多个数据卷(一个“-v”挂载一个数据卷)

4)如果出现 cannot open directory:permission denied 时,需要多加一个 —privileged=true参数即可(有些系统里面可能会认为挂载目录时不安全的所以就被禁止了,而加入参数后会将这一限制打开)

案例如下

第一步,创建启动容器

docker run -it --privileged=true -v /Users/xxxxx/host_data:/tmp/docker_data --name=test1 13b66b487594
## /Users/xxxxx/host_data 表示宿主机绝对路径
## /tmp/docker_data 容器目录路径

第二步,确定容器是否开启成功

docker ps

第三步,查看数据卷是否挂在成功,输入如下命令

docker inspect 容器名
找到Mounts(表示挂载)信息,其中
type:bind  表示绑定型的
Source      表示宿主机路径
destination    表示容器内路径

一篇搞定Docker数据卷及其配置
上述过程就可以实现容器和宿主机之间数据共享啦。

  1. 当在容器目录内输入一些内容时,数据卷(宿主机目录)中的内容也会随即更新;当更新数据卷中的内容时,容器目录中的内容也会随即更新;这种方式也叫做映射。将容器目录映射到宿主机。
  2. 当容器被停止时,在宿主机中修改文件,当再进去容器时,文件也同样被修改。

4.2 配置多个数据卷

为一个容器配置多个数据卷

docker run -it -v /宿主机目录绝对路径1:/容器内目录路径1 -v /宿主机目录绝对路径2:/容器内目录路径2 -v /宿主机目录绝对路径3:/容器内目录路径3 -name="xx" 镜像名  —privileged=true

4.3 多个容器挂载同一个数据卷

执行命令

docker run -it -v /宿主机目录绝对路径:/容器内目录路径 --name="xx" 镜像名  —privileged=true
或者
docker run -it -v /宿主机目录绝对路径:/容器内目录路径 --name="xx" 镜像名 —privileged=true

案例详解

docker run -it -v /User/xxx/data:/data --name="demo1" ubuntu:14.04 —privileged=true

docker run -it -v /User/xxx/data:/data --name="demo2" ubuntu:14.04 —privileged=true

详细说明:当在容器demo1中更新目录内容时,数据卷 /User/xxx/data和 容器demo2中的内容会同步更新。

4.4 容器的数据卷

多容器间进行数据交换,有两种方式:

  • 多个容器挂载同一个数据卷(缺点:操作比较麻烦,因为当容器过多时,需要一个个的挂载)
  • 数据卷容器

相比,数据卷容器方式更胜一筹,同时数据卷容器也体现了数据卷的继承关系。

4.4.1 数据卷容器概念

见名知意,容器的数据卷,也可以称为数据卷容器或者容器卷,表示这个容器是用来共享数据的。

可以看下图,

  1. 在 c3 容器挂载了一个数据卷,
  2. c1 和 c2 容器再分别挂载到 c3 容器上,
  3. 这样 c1 和 c2 容器相当于挂载到了数据卷上,这样的话 c1、c2 c3 可以相互通信,即使 c3 挂了,c1 和 c2 也可以通过数据卷进行通信。

一篇搞定Docker数据卷及其配置

4.4.2 如何配置数据卷容器

第一步,创建启动 c3 数据卷容器,使用-v 参数设置数据卷

docker run -it -v /容器目录 —name="c3" 镜像名 /bin/bash
## /容器目录 表示当没有指定宿主机目录时,docker会自动分配

第二步,数据卷继承

docker run -it --name="c1" --volumes-from c3 镜像名
docker run -it --name="c2" --volumes-from c3 镜像名

案例详解

第一步,创建启动c3容器

docker run -it -v /volumes —name="c3" ubuntu:14.04 /bin/bash

进入c3 容器后,可看到有新增目录 volumes
一篇搞定Docker数据卷及其配置
此时再新建命令窗口输入命令

docker inspect 3d065763c8af

查看宿主机目录路径(数据卷路径)
一篇搞定Docker数据卷及其配置

第二步,分别创建启动 c1 和 c2 容器

docker run -it --name="c1" --volumes-from c3 ubuntu:14.04

docker run -it --name="c2" --volumes-from c3 ubuntu:14.04

##进入容器后,均会发现容器内有新增 volumes 目录,此时也可以输入命令 docker inspect c1,查看容器挂载信息

一篇搞定Docker数据卷及其配置
上述步骤即可实现容器间数据交换,当容器 c3 挂掉时,c1 和 c2 依然可正常数据交换。

4.5 读写规则映射添加说明

docker run -it -v /宿主机目录绝对路径:/容器内目录路径 --name="xx" 镜像名  —privileged=true
或者
docker run -it -v /宿主机目录绝对路径:/容器内目录路径:rw --name="xx" 镜像名  —privileged=true

当未添加 rw 参数时,默认数据卷是有可读可写权限。
如果给数据卷只读权限,则使用如下命令:

docker run -it -v /宿主机目录绝对路径:/容器内目录路径:ro --name="xx" 镜像名  —privileged=true

5 总结

数据卷是宿主机中的一个目录或文件。数据卷可使容器数据持久化;保持外部数据和容器间接通信;容器之间可数据交换;卷中的更改可以直接实时生效;数据卷中的更改不会包含在镜像的更新中;数据卷的生命周期一直持续到没有容器使用它为止;如果大家通过本篇文章了解了数据卷以及数据卷的配置,这将是本篇文章分享的意义。

如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍文章来源地址https://www.toymoban.com/news/detail-401478.html

到了这里,关于一篇搞定Docker数据卷及其配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • web项目部署,一篇就搞定!

    web部署的方式有很多,根据开发方式不同,部署方式也不同。最通用是docker部署,这个想必大家都熟悉。我们今天说另外一种。 1、验证Jdk是否安装成功 2、验证Tomcat是否安装成功 3、验证Navicat 是否能连上数据库 4、创建数据库并导入数据库脚本(注意:它这里数据库名必须为

    2024年03月20日
    浏览(47)
  • 一篇搞定分布式大数据系统所有概念,包括有Hadoop、MapReduce、HDFS、HBASE、NoSql 、ZooKeeper 、Reidis 、Nginx 、BASE、CAP定义、特点和应用场景

    1.1hadoop定义和特点 Hadoop定义: Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它基于Google的MapReduce论文和Google文件系统(GFS)的设计理念,并由Apache软件基金会进行开发和维护。 Hadoop的主要特点包括: 分布式存储:Hadoop通过分布式文件系统(Hadoop Dist

    2024年02月03日
    浏览(58)
  • 自动化接口测试之Postman(一篇搞定)

    该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版):Chrome App v5.5.3 不同版本页面 UI 和部分功能位置会有点不同,不过影响不大。 我们先思考一下,如果需要达

    2024年02月03日
    浏览(50)
  • Spring IOC 与 AOP 基础原理,一篇搞定

    控制反转,一切对象交给Spring来创建于管理,将创建与使用对象的代码进行分离作用。实现代码的解耦。 因为以前的对象创建都是在程序的创建,管理。这是所谓的正转,如今的对象的创建是在IOC中,在 IOC Container中获取。这就是反转。 DI,denpendecy inject。依赖注入,在应用

    2024年01月21日
    浏览(40)
  • 一篇搞定C语言操作符(详解含示例)

    目录 一.操作符是什么? 基本特征 语义 优先级 结合性 二.操作符的分类 三.操作符各类详解 1.算数操作符(+     -     *     /     %) (1)优先级: (2)除法操作符(/)的计算规则及注意事项 (3)取余操作符(%)的计算规则 (4)算术操作符示例代码 2.移位操作符

    2024年02月10日
    浏览(34)
  • nRF51822 入门必备教程(一篇搞定nRF51)

    部署PC端开发环境 nRFgo Studio v1.14或更高版本 Keil MDK-ARM Lite v4.54或更高版本 J-Link Software v4.52b或更高版本 下载手机端app IOS系统:进入App Store并搜索“ nRFToolbox ” Android系统(4.3或更高):下载nRFToolbox,解压后安装即可 注意:蓝牙4.0和传统蓝牙的开发方法不同,首先需要手机支持蓝

    2024年02月04日
    浏览(45)
  • Jmeter进行http接口测试,这一篇就搞定

    jmeter-http接口测试脚本 jmeter进行http接口测试的主要步骤(1.添加线程组 2.添加http请求 3.在http请求中写入接口的URL,路径,请求方式,参数 4.添加查看结果树 5.调用接口,查看返回值) 针对接口添加header在如下途径添加: jmeter做http接口测试添加cookie: 3.jmeter-webservice脚本 进

    2024年04月15日
    浏览(59)
  • 一篇搞定发布自己的类库到Maven中央仓库

    在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。 此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地? 本文将通过一步步的操作

    2024年02月05日
    浏览(42)
  • 一篇搞定MySQL索引长度(key_len)计算规则

    MySQL索引长度(key_len)计算  计算规则 索引字段:没有设置 NOT NULL,则需要加 1 个字节。 定长字段: tinyint 占 1 个字节、 int 占 4 个字节、 bitint 占 8 个字节、 date 占 3 个字节、 datetime 占 5  个字节、 char(n) 占 n 个字节。 变长字段: varchar (n) 占 n 个字符 + 2 个 字节 。 注意(

    2024年02月07日
    浏览(34)
  • 一篇搞定利用开源库写一个OpenGL测试窗口小工具

    目录 由于代码不好抽离,所有的代码最终我会上传至百度网盘,附上连接,需要的可以对照的看文章,包括前面所有的学习笔记的,代码都有详细中文注释。Application为就main函数,ApplicationNew为新main函数,如有其他疑问,可以留言评论。 链接:https://pan.baidu.com/s/1gmosgzliBi4e

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包