Docker学习笔记九:Docker数据卷知识【重要】

介绍

 目的

  • 数据卷(Data Volumes)是宿主机中的一个目录或文件,数据卷的设计目的就是数据的持久化,完全独立于容器的生存周期。
  • 一个数据卷可以被多个容器同时挂载,一个容器也可以被挂载多个数据卷(即:可实现多个容器数据共享)。
  • 当容器目录和数据卷目录绑定后,修改之后会立即同步。
  • Docker不会在容器被删除时删除其挂载的数据卷。(注:持久化)

 

特点

  • 数据卷可以在容器之间共享和重用,本地与容器间传递数据更高效。

  • 数据卷的修改会立马有效,在容器内部与本地目录均可对数据卷进行修改。

  • 数据卷的更新,不会影响镜像,对数据与应用进行了解耦操作。

  • 数据卷会一直存在,即使是没有容器使用。

 

作用

说明

  • 在docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失。
  • 要想实现数据的持久化,需要将容器与宿主机进行数据卷的挂载
  • 目前docker提供了三种方式将数据从宿主机挂载到容器中:
    • Volume:普通数据卷,映射到/var/lib/docekr/volumes目录下。
    • Bind Mounts:常用方式,绑定数据卷,映射到宿主机指定路径下
    • tmpfs mounts:临时卷,只存在于宿主机内存中

 

实现

  • 使用“docker run”创建容器时,添加参数“-v 宿主机目录:容器目录:模式”来指定容器与宿主机的目录挂载
    • -v 宿主机目录:容器目录:模式:目录如果没有,会自动进行创建
    • mode:默认是RW可不写,RW:可读可写,RO:容器内只读
    • --privileged=true:目录映射时避免出现权限问题(ps:解决docker挂载主机目录访问出现cannot open directory .: Permission denied)
    • 示例:docker run -d --name=jenkins --privileged=true -v /usr/local/apache-maven-3.8.3:/usr/local/apache-maven-3.8.3:rw jenkins:latest

 

卷的继承和共享

说明

  • 容器卷的继承,类似Java类的继承。
  • 容器卷继承指的是:子容器继承父容器的容器卷的挂载方式。
  • 容器卷继承之后,子容器对挂载的数据卷操作不受父类影响,如:父容器停掉之后,子容器可以继续对挂载的目录进行操作。
  • 容器卷继承之后,实现了多个容器挂载同一个目录,实现了容器之间数据的共享
 

实现

  • 使用“docker run”创建容器时,添加参数“--volumes-from 父类容器名/父类容器ID”来指定新建的容器继承的容器卷信息

    • --volumes-from 父类容器名/父类容器ID:新建容器会继承父容器的容器卷挂载的方式
    • 示例:docker run -d  --privileged=true --volumes-from jenkins1  --name jenkins2 jenkins:latest 

 

posted @ 2022-12-07 23:16  零下一度的微笑  阅读(110)  评论(0编辑  收藏  举报