当前位置: 首页 > article >正文

docker挂载数据卷

一、Docker 容器的数据卷

1、什么是数据卷?

数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或者多个容器提供访问,数据卷 设计的目的,在于数据的永久存储,它完全独立于容器的生存周期,因此,docker 不会在容器删除时删 除其挂载的数据卷,也不会存在类似的垃圾收集机制,对容器引用的数据卷进行处理,同一个数据卷可 以只支持多个容器的访问。

2、 数据卷的特点:

1.数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会被拷贝到新初始 化的数据卷中
2.数据卷可以在容器之间共享和重用
3.可以对数据卷里的内容直接进行修改
4.数据卷的变化不会影像镜像的更新
5.卷会一直存在,即使挂载数据卷的容器已经被删除

二、为容器添加数据卷

1、添加卷
docker run -v /datavolume:/data -it centos /bin/bash
docker run --name volume -v ~/datavolume:/data -itd centos /bin/bash

注:~/datavolume 为宿主机用户目录下的datavolumn目录,/data 为 docker 启动的 volume 容器的里的目录 这样在宿主机的/datavolume 目录下创建的数据就会同步到容器的/data 目录下

2、数据卷添加访问权限
docker run --name volume1 -v ~/datavolume1:/data:ro -itd centos /bin/bash 

添加只读权限之后在 docker 容器的/data 目录下就不能在创建文件了,为只读权限;在宿主机下的 /datavolume1 下可以创建东西

进入到新创建的容器

docker exec -it data-volume2 /bin/bash 

查看容器的/datavolume6 目录下是否新创建了 lucky.txt 文件

cd /datavolume6 

可以看见有刚才在上一个容器创建的文件 lucky.txt

三、数据备份和还原

1、数据备份
docker run --volumes-from [container name] -v $(pwd):/backup centos tar czvf /backup/backup.tar [container data volume]

例子:

docker run --volumes-from data-volume2 -v /root/backup:/backup --name datavolume-copy centos tar zcvf /backup/data-volume2.tar.gz /datavolume6
2、数据还原
docker run --volumes-from [container name] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [container data volume]

例:

docker exec -it data-volume2 /bin/bash 
cd /datavolume6 
rm -rf lucky.txt 
docker run --volumes-from data-volume2 -v /root/backup/:/backup centos tar zxvf /backup/data-volume2.tar.gz -C /datavolume6 
docker exec -it data-volum2 /bin/bash cd /datavolum6 

可以看到还原后的数据

四、dockerfile挂载

dockerfile 指令:
volume[“/data”]

cat dockerfile 
FROM centos 
VOLUME ["/datavolume3","/datavolume6"] 
CMD /bin/bash 

使用如下构建镜像

docker build -t="volume" . 

启动容器

docker run --name volume-dubble -it volume 

会看到这个容器下有两个目录,/datavolume3 和/datavolume6

五、数据卷容器

【1】什么是数据卷容器:

命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫做数据卷容器

【2】挂载数据卷容器的方法
docker run --volumes-from [container name] 

例:

docker run --name data-volume -itd volume

(volume 这个镜像是上面创建的带两个数据卷 /datavolume3 和/ddatavolume6 的镜像)

docker exec -it data-volume /bin/bash(进入到容器中)
touch /datavolume6/lucky.txt 

退出容器

exit 

创建一个新容器挂载刚才 data-volume 这个容器创建的数据卷

docker run --name data-volume2 --volumes-from data-volume -itd centos /bin/bash 

进入到新创建的容器

docker exec -it data-volume2 /bin/bash 

查看容器的/datavolume6 目录下是否新创建了 lucky.txt 文件

cd /datavolume6 

可以看见有刚才在上一个容器创建的文件 lucky.txt


http://www.kler.cn/a/227987.html

相关文章:

  • Chrome浏览器编译系统研究与优化分析
  • 数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)
  • ASP.NET代码审计 SQL注入篇(简单记录)
  • concurrent.futures.Future对象详解:利用线程池与进程池实现异步操作
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-head.py
  • 【漫话机器学习系列】064.梯度下降小口诀(Gradient Descent rule of thume)
  • Java设计模式 – 四大类型
  • 完整的带日志的FFmpeg的命令
  • C语言问题汇总
  • flutter go_router 官方路由(一)基本使用
  • Python||五城P.M.2.5数据分析与可视化_使用复式柱状图分析各个城市的P.M.2.5月度差异情况(中)
  • Java学习笔记2024/2/3
  • 您应该使用哪个库?jsoniter、easyjson 还是 go-json?为什么?
  • Android电动汽车充电服务vue+uniAPP微信小程序
  • docker初级问题一
  • Vite+Vue3使用Vue-i18n笔记
  • go消息队列RabbitMQ - 订阅模式-direct
  • 万户 ezOFFICE wpsservlet SQL注入漏洞
  • 2024/2/4 备战蓝桥杯 5-1 前缀和
  • 什么是 Java 中的 IO 和 NIO?它们之间有什么区别?什么是 Java 中的内存管理和垃圾回收?常见的垃圾回收算法有哪些?
  • Redisson看门狗机制
  • ubuntu 18.04修改网卡名称
  • 论文阅读-在分布式数据库环境中对哈希算法进行负载均衡基准测试
  • 调试OpenHarmony应用/服务
  • gpt今日最新新闻:gpts的广泛应用
  • Mysql架构系列——生产常用的高可用部署模式介绍