• Docker学习(4)—— 容器数据卷


    数据卷是为了实现数据的持久化,完全独立于容器的生存周期,因此Docker不会在删除容器时删除其挂载的数据卷。

    通过下述方式运行一个容器,会自动将docker容器内的数据保存进宿主机的磁盘中

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

    例如:通过上述方式运行一个centos容器,在centos容器内创建的文件会自动备份到宿主机的目录中,同样在宿主机的目录中创建的文件也会自动保存到centos容器内的相关目录中。如果将centos容器stop,然后在主机内创建一个文件,之后再重启该centos容器,则容器内依然有本机创建的文件。

    1. docker修改,主机同步获得
    2. 主机修改,docker同步获得

    3. docker容器stop,主机修改,docker容器重启,数据依然同步。 

    一. 实现容器卷与主机互通 

    1. 运行centos容器

    将本机的/tmp/host_data目录与centos容器的/tmp/docker_data目录互通 

    docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data centos

    2. 在centos容器的/tmp/docker_data目录下创建一个a.txt文件

    3. 查看本机的/tmp/host_data目录,可以看到本机的/tmp/host_data目录下也有一个a.txt文件

     

    4. 在本机的/tmp/host_data目录下创建一个b.txt文件

     

    5. 查看centos容器的/tmp/docker_data目录,可以该目录下也有一个b.txt文件

    另外,不管是在centos容器内还是在本机修改了a.txt或b.txt,两个目录的a.txt或b.txt都会发生相同的变化。

    如果将centos容器stop停止,并在主机上创建一个c.txt,然后重启该centos容器(使用start 容器id的方式开启该容器,而不是新建容器),则该容器内依然有c.txt。

    查看容器卷绑定情况

    docker inspect 容器id

    二. 读写权限

    1. 写权限(容器内可读可写)

    可以不加:rw,默认是写权限 

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

    2. 只读权限(容器内只能读不能写)

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

    此时如果宿主机写入内容,可以同步给容器内,容器可以读取到;但是容器不可以写

    三. 容器卷之间的继承

    docker run -it --privileged=true --volumes-from 父类容器ID或父类容器名 镜像名
    

    例如:创建一个名为u1的centos容器,再创建一个名为u2的centos容器来继承u1,在u2中创建一个文件,则u1和本机都会有该文件。如果将u1停止,则在u2内创建一个新的文件,则u1和本机依然有该文件。

    1.创建u1 

    2. 创建u2继承u1 

    3. u1中有u2创建的文件

    4. 本机有u2创建的文件 

  • 相关阅读:
    【C++】详解map和set基本接口及使用
    【黄啊码】用PHP7性能居然是5.6的三倍?赶紧看看它有什么新特性
    Spring Boot结合FFmpeg实现视频会议系统视频流处理与优化
    C++ 跨平台UI框架 JUCE
    酒店订房退房管理系统(数组应用)
    商业智能BI业务分析思维:供应链分析 - 什么是牛鞭效应(一)
    【浅学Java】SpringBoot创建和使用
    Linux中安装配置Mysql详细步骤
    Toronto Research Chemicals萜烯分析丨反式植物醇
    如何将c#在线编辑器嵌入自己项目
  • 原文地址:https://blog.csdn.net/Archer__13/article/details/128038053