容器卷是什么?

文章介绍了Docker容器卷的概念,作为数据持久化的一种方式,不受容器生命周期影响。详细阐述了如何通过命令行创建和映射容器卷,包括读写规则设置,以及卷的继承和共享,强调了数据在容器和宿主机之间的同步特性。
摘要由CSDN通过智能技术生成

学习笔记


前言

学会了搭建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 查看

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

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

挂载成功

思考:如果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 -文件

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

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
  • 容器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 的内容

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

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

总结

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值