当前位置:   article > 正文

容器卷是什么?

容器卷是什么

学习笔记


前言

学会了搭建Docker私有镜像仓库后了解容器卷相关内容


一、容器卷是什么,能做什么?

卷就是目录或文件,存在于一个或者多个容器中, 由docker挂载到容器,但不属于联合文件系统,因此能绕过Union File System提供一些用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。

作用:
映射,容器内的数据备份+持久化到本地主机目录。

二、容器卷操作步骤(例子)

特别注意 :加入 - - privileged=true
#用于提供容器中的进程对主机系统的完全访问权限

1 . 宿主和容器之间映射添加容器卷

① 直接命令添加

② 命令

公式:docker run -it -v /宿主机目录:/容器内目录 镜像名

  • 验证数据是否同步(双向验证)
docker run -it --name myu3 --privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash

cd /tmp/myDockerData/  //进入容器内目录
touch dockerin.txt   //在容器内目录新建一个文档

cd /tmp/myHostData/   //进入宿主机目录
ls  //查看目录
touch hostin.txt  //在主机目录创建一个文档
//返回容器内目录 ls -l 查看
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

提示:其中输入的目录会自动创建,且ubuntu后不写/bin/bash时会默认shell不影响</font>

  • 查看数据卷是否挂载成功
    docker inspect 容器ID
docker inspect  289c742ccb90 
  • 1

挂载成功

思考:如果docker容器stop,主机修改,docker重启后数据是否同步?

docker stop 289c742ccb90

touch c.txt  //在主机目录中创建

docker start 289c742ccb90

docker exec -it 289c742ccb90 /bin/bash

cd /tmp/myDockerData/

ls -l
//结果发现与宿主机目录内容相同,存在- c.txt -文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述
显然数据仍然是同步的 ^ _ ^

2 . 读写规则映射

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

rw = read + write
*不单独说明时默认为 rw

  • 设置只读
    /容器目录:ro 镜像名(容器只能读取不能写)
    ro = read only

3 . 卷的继承和共享

  • 在容器1完成和宿主机的映射
docker run -it --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu
  • 1
  • 容器2继承容器1的卷规则
    语法:docker run -it --privileged=true –volumes-from 父类 --name u2(目录) ubuntu(镜像名)
docker run -it --privileged=true -volumes from u1 --name u2 ubuntu
// u2 继承了u1 的内容
  • 1
  • 2

在容器2中更改内容在宿主机和容器1中均会同步,实现数据的共享传递。

中途删除容器1,在容器2中更改添加内容依旧同步在宿主机,恢复容器1,数据也会同步。

总结

容器卷是一种非常有用的工具,可以帮助开发人员更好地管理容器中的数据,并提高容器的性能和安全性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/283791
推荐阅读
相关标签
  

闽ICP备14008679号