• Docker 容器的数据卷的使用


    前言

      本文是 Docker 容器的数据卷使用的简单教程,介绍了什么是数据卷、数据卷概念、以及如何使用数据卷等。

      部分水印照片是我自己博客的水印。

    1、数据卷概念

      数据卷简单来讲就是一个目录,它是由Docker daemon 挂载到容器中的,因此数据卷并不属于联合文件系统,也就是说数据卷里面的内容不会因为容器的删除而丢失。Docker启动后,容器内的文件和宿主机是隔离的,如果不使用docker commit 操作提交容器为镜像把数据保存下来,数据就会因为容器的删除而丢失。

    • 数据卷是宿主机中的一个目录或文件
    • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
    • 一个数据卷可以被多个容器同时挂载
    • 一个容器也可以被挂载多个数据卷

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLCdD6B6-1666522814974)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/47404a2c25804e66be04b3935e80b3a3~tplv-k3u1fbpfcp-watermark.image?)]

    2、数据卷作用

      docker默认容器关闭后数据就没了,如果不通过docker commit生成新的进行数据就会丢失。数据卷的作用就是将docker容器运行产生的数据持久化。

    • 容器数据持久化
    • 外部机器和容器间接通信
    • 容器之间数据交换
    3、配置数据卷

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

    docker run ... –v 宿主机目录(文件):容器内目录(文件) ... 
    ​
    #docker run -it --name=c1 -v /root/data:/root/data_container couchbase/centos7-systemd /bin/bash
    
    • 1
    • 2
    • 3

    容器的目录data_container

    本机的目录data

    1)此时在宿主机(本机)data目录下创建文件

    touch test.txt
    
    • 1

    !](https://img-blog.csdnimg.cn/db5f709d77d249fea191f0bf2f0135ac.png)

    2)在容器查看data_container,发现同步过来了。

    ![]](https://img-blog.csdnimg.cn/0d5b273b960b43a4bb554e0aa16fdc5b.png)

    注意事项:

    • 目录必须是绝对路径
    • 如果目录不存在,会自动创建
    • 可以挂载多个数据卷
    4、多容器进行数据交换
    • 多个容器挂载同一个数据卷
    • 数据卷容器
    5、数据卷容器

    在这里插入图片描述

    1)创建启动c3数据卷容器,使用 –v 参数 设置数据卷

    docker run –it --name=c3 –v /volume centos:7 /bin/bash  
    
    • 1

    2)创建启动 c1 c2 容器,使用 –-volumes-from 参数 设置数据卷

    docker run –it --name=c1 --volumes-from c3 centos:7 /bin/bash 
    ​
    docker run –it --name=c2 --volumes-from c3 centos:7 /bin/bash
    
    • 1
    • 2
    • 3
    6、数据卷小结

    1)数据卷概念

    • 宿主机的一个目录或文件

    2)数据卷作用

    • 容器数据持久化
    • 客户端和容器数据交换
    • 容器间数据交换

    3)数据卷容器

    • 创建一个容器,挂载一个目录,让其他容器继承自该容器( --volume-from )
    • 通过简单方式实现数据卷配置

    总结

      数据卷可以在容器之间共享和重用;对数据卷的修改会立马生效;对数据卷的更新,不会影响到镜像;数据卷默认会一直存在,即使容器被删除。数据卷简单来讲就是一个目录,它是由Docker daemon 挂载到容器中的,因此数据卷并不属于联合文件系统。最后,送上一句自己喜欢的话:“没有风浪,便没有勇敢的弄潮儿;没有荆棘,也没有不屈的开拓者。”。

  • 相关阅读:
    svn提交规范
    057_末晨曦Vue技术_处理边界情况之强制更新($forceUpdate)与通过 v-once 创建低开销的静态组件
    LAMP的源码搭建
    mysql mvcc介绍
    Java 8 要过时了?从JDK8飞升到JDK17,一次性给你讲明白
    go语言详解-----包(package)引入
    Java 并发编程面试题——synchronized 与 volatile
    梯度下降、反向传播、激活函数、参数初始化、批量归一化是深度学习中常用的几个概念
    Ubuntu2204部署容器引擎Containerd
    MyBatis-XML映射文件
  • 原文地址:https://blog.csdn.net/qq_53463544/article/details/127478727