• Docker 数据卷管理


    数据卷介绍

     

    1. 宿主机无法直接访问容器中的文件
    2. 容器中的文件没有持久化,导致容器删除后,文件数据也随之消失
    3. 容器之间无法直接访问相互的文件

    为解决这些问题,docker加入了数据卷(volumes)机制,能很好解决上面问题,以实现:

    1. 容器与主机之间,容器与容器之间共享文件
    2. 容器中的数据持久化
    3. 将容器中的数据备份,迁移,恢复等

     

    数据卷特点

     

    1. 数据卷存在宿主机的文件系统中,独立于容器,和容器的生命周期是分离的。
    2. 数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换
    3. 容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会拷贝到数据卷中
    4. 容器对数据卷的修改是实时进行的
    5. 数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响

     

    数据卷的挂载方式(三种)

     

    1. bind mounts:将宿主机上的一个文件或目录被挂载到容器上
    2. volumes:由Docker创建和管理。使用docker volume命令管理
    3. tmpfs mounts:tmpfs 是一种基于内存的临时文件系统。tmpfs mounts 数据不会存储在磁盘上

       

     

    bind mounts挂载

     

    利用docker run/create d的参数为容器进行挂载数据卷

    用法:

    1. 方式一:  
    2.     
    3.     -v, --volume list  
    4.     -v 宿主机文件路径:容器中的文件路径  
    5.     
    6. 方式二:  
    7.     --mount  
    8.     --mount type=bindsrc=宿主机路径dst=容器路径  
    9.     
    10. 注意:  
    11.     src指定的文件或者路径必须存在  

     

     

     

     

    volumes挂载

    利用docker run/create为容器挂载数据卷

    用法:

    1. 方式一:  
    2.     -v, --volume参数  
    3.     -v VOLUME-NAME:容器中的文件或者文件夹路径  
    4.     
    5. 方式二:  
    6.     --mount 参数  
    7.     --mount type=volumesrc=VOLUME-NAME, dst=容器中的文件或者文件夹路径  
    8.     
    9. volume对象管理:  
    10.     docker volume 命令管理volume数据卷对象  
    11.     docker volume create        创建数据卷对象  
    12.     docker volume inspect       查看数据卷详细信息  
    13.     docker volume ls            查看已创建的数据卷对象  
    14.     docker volume prune     删除未被使用的数据卷对象  
    15.     docker volume rm        删除一个或多个数据卷对象  

     

     

     

    tmpfs mount挂载

     

    利用docker run/create为容器挂载数据卷

    用法:

        --mount type=tmpfsdst=PATH  

     

     

     

    共享其他容器的数据卷

     

    利用docker run/create 的--volumes-from参数指定数据卷容器

     

    用法:

        docker run/create --volumes-from CONTAINER  

     

     

     

    数据卷使用注意项

     

    1. 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。
    2. 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。
    3. 这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

     

     

     

     

     

  • 相关阅读:
    CRM客户关系管理系统(十)
    CRM客户关系管理系统(九)
    CRM客户关系管理系统(八)
    CRM客户关系管理系统(七)
    CRM客户关系管理系统(六)
    5.使用Redis+Flask维护动态Cookies池
    1.数据结构--数组
    php接口安全设计浅谈
    python3 使用selenium +webdriver打开chrome失败,报错:FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver': 'chromedriver'
    4.使用Redis+Flask维护动态代理池
  • 原文地址:https://www.cnblogs.com/py-web/p/11975604.html
Copyright © 2020-2023  润新知