• 了解一下docker容器数据卷


    容器卷就是目录或者文件,存在于一个或者多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷。容器之间可以有一个数据共享的技术,docker容器中产生的数据,同步到本地。这就是卷技术,目录的挂载,将我们的容器内的目录,挂载到Linux宿主机上!

    一句话:类似redis的edb和aof持久化,将docker容器内的数据保存进宿主机的磁盘中,运行一个带有容器卷存储功能的容器实例。

    举例:如果数据都存在容器中,那么把容器删除,数据就会丢失。那么数据可以持久化;Mysql容器删了,数据也都丢了,Mysql数据可以存储在本地!

    容器数据卷是为了实现容器的持久化和同步操作!容器间也是可以实现数据共享的(多个容器可以共享一个地方的数据)

    特点总结:

    1. 数据卷可以在容器之间共享或者重用数据
    2. 卷中的更改可以直接实时生效,爽。docker修改,主机同步获得;主机修改,docker同步获得;docker容器stop,主机修改,docker容器重启,数据依然同步。
    3. 数据卷中的更改不会包含在镜像的更新中
    4. 数据卷的生命周期一直持续到没有容器使用它为止

    测试

    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名    //命令
    docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=mytest ubuntu

    docker交互式运行完成之后,会在docker容器和宿主机目录下分别自动创建映射的目录,两个目录下的数据可以同步共享.

    docker inspect 容器ID //用来查看容器的信息
    docker inspect c19f6424169b

    这里目前只有一个对应目录挂载,实际可以挂载多个,比如日志、数据等目录。

    容器与宿主机文件权限设置 

    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名    //命令 ,默认是rw,可读可写

    有时候让容器里是只读的,容器内部被限制,只能读不能写。

    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名    //命令 ,是ro,也就是read only首字母,只可读

    容器卷的继承和共享 

    docker run -it --privileged=true --volumes-from 父类 --name mytest2 ubuntu

    比如运行了一个测试父级容器

    docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=mytest1 ubuntu   //mytest1

    子类继承父级

    docker run -it --privileged=true --volumes-from mytest1 --name mytest2 ubuntu

    假如父级容器意外终止,依然可以容器与宿主机传递,也类似于mysql的数据库主从,好比宿主机相当于主库,两个容器相当于两个从库。

  • 相关阅读:
    JavaScript之arguments对象讲解
    JavaScript之工厂方式 构造函数方式 原型方式讲解
    JavaScript之常用方法讲解
    JavaScript之引用类型讲解
    JavaScript之数据类型讲解
    JavaScript之Cookie讲解
    __cdecl __stdcall __fastcall之函数调用约定讲解
    xp/2003开关3389指令
    php源码安装常用配置参数和说明
    用yum查询想安装的软件
  • 原文地址:https://www.cnblogs.com/wt645631686/p/16360061.html
Copyright © 2020-2023  润新知