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

Docker 存储与数据共享

Docker 存储与数据共享

一、Docker存储基础

1、Docker镜像分层结构
  • 容器由可读写的容器层和多个只读的镜像层组成
  • 写时复制(Copy-on-Write) 机制:
    • 新数据写入容器层
    • 修改数据时,先从镜像层复制到容器层再修改
    • 多层镜像中同名文件,容器中只显示最上层内容
2、联合挂载技术(Union Mount)
  • 镜像层存储在 /var/lib/docker/<storage-driver>/
  • 常用存储驱动:AUFS(Ubuntu)、OverlayFS(CentOS 7.1+)
  • OverlayFS 是一种堆叠文件系统,不直接管理磁盘,而是合并多个目录
  • Overlay2 是 Overlay 的改进版,inode 利用率更高
  • 要求:Docker 17.06.02+,宿主机文件系统为 ext4 或 xfs

二、数据卷(Volume)类型

1、Bind Mounts(绑定挂载)
  • 特点
    • 手动指定宿主机路径与容器路径的映射
    • 支持文件和目录
    • 可设置读写权限(默认读写,可设为只读 :ro
  • 优点:灵活,可直接操作宿主机文件
  • 缺点:依赖宿主机路径,移植性差
[root@docker ~]# mkdir /html
[root@docker ~]# echo 123 > /html/index.html
[root@docker ~]# docker run --name test1 -itd -p 80:80 -v /html:/usr/share/nginx/html nginx:latest 
[root@docker ~]# curl http://127.0.0.1

在这里插入图片描述

[root@docker ~]# docker run --name test1 -itd -p 80:80 -v /html:/usr/share/nginx/html:ro nginx:latest
# 指定权限为只读
2、Docker Managed Volume(Docker管理卷)
  • 特点
    • Docker自动管理卷路径(默认在 /var/lib/docker/volumes/...
    • 容器启动时若目录不为空,会将其内容复制到卷中
    • 支持 CLI 和 API 管理
  • 优点
    • 移植性强
    • 支持备份、迁移、多容器共享、加密等
[root@docker ~]# docker run --name test2 -itd -p 80:80 -v /usr/share/nginx/html nginx:latest
[root@docker ~]# docker volume create wiltjer
[root@docker ~]# docker run --name test3 -itd -p 81:81 -v wiltjer:/usr/share/nginx/html nginx:latest

三、Volume 类型对比

特性Bind MountsDocker Managed Volume
路径指定手动指定任意路径自动在 /var/lib/docker/volumes/
对已有内容影响隐藏并替换容器中原有内容将容器中原有内容复制到卷
支持单个文件支持不支持
权限控制支持只读(:ro默认读写,无法控制
移植性差,依赖宿主机路径强,不依赖具体路径

四、容器间数据共享

1、共享同一个 Volume
  • 多个容器挂载同一个宿主机路径或 Docker 卷
[root@docker ~]# docker run --name apache1 -itd -p 8081:80 -v /html:/usr/share/nginx/html nginx:latest 
[root@docker ~]# docker run --name apache2 -itd -p 8082:80 -v /html:/usr/share/nginx/html nginx:latest 
[root@docker ~]# docker run --name apache3 -itd -p 8083:80 -v /html:/usr/share/nginx/html nginx:latest

在这里插入图片描述

2、Volume Container(数据卷容器)
  • 创建一个专门提供卷的容器,其他容器通过 --volumes-from 共享
[root@docker ~]# docker create --name data -v /html:/usr/share/nginx/html busybox:latest
[root@docker ~]# docker run --name nginx1 -itd -p 8081:80 --volumes-from data nginx:latest 
[root@docker ~]# docker run --name nginx2 -itd -p 8082:80 --volumes-from data nginx:latest 
[root@docker ~]# docker run --name nginx3 -itd -p 8083:80 --volumes-from data nginx:latest

在这里插入图片描述

3、Data-Packed Volume Container(数据打包卷容器)
  • 将数据打包到镜像中,再通过卷共享,实现完全自包含
[root@docker ~]# vim Dockerfile
FROM busybox:latest
ADD html /usr/share/nginx/html
VOLUME /usr/share/nginx/html
CMD [“/bin/bash”]
[root@docker ~]# docker build -t mydata .
[root@docker ~]# docker create --name mydatac mydata
[root@docker ~]# docker run --name mynginx -itd -p 8088:80 --volumes-from mydatac nginx:latest

五、总结

  • Volume 类型:Bind Mounts 和 Docker Managed Volume
  • 数据共享方式
    • 共享同一 Volume
    • Volume Container
    • Data-Packed Volume Container(最适合静态数据、配置等)
  • 持久化方式:使用 -v--mount 挂载卷,实现容器数据的持久存储与共享
http://www.dtcms.com/a/477697.html

相关文章:

  • k8s storageclasses nfs-provisioner 部署
  • Linux(Samba服务)
  • 电商智能客服进化论:多轮对话+意图识别+知识推荐系统开发
  • 算法198. 打家劫舍
  • 刚学做网站怎么划算全栈网站开发工程师
  • 长春网站优化公司wordpress目录遍历漏洞
  • 华为OD-23届考研-Java面经
  • 10.9 鸿蒙创建和运行项目
  • delphi调用C#编写的DLL
  • 从API调用到智能体编排:GPT-5时代的AI开发新模式
  • C++学习录(1):C++入门简介,从零开始
  • 电力专用多功能微气象监测装置在电网安全运维中的核心价值是什么?
  • 科研快报 |声波“听”见火灾温度:混合深度学习重构三维温度场
  • 从超级大脑到智能毛细血管:四大技术重构智慧园区生态版图
  • 旅游网站建设方案书制作一个网站平台需要多少钱
  • SQL入门:集合运算实战指南
  • Docker 网络类型与容器通信
  • Oracle 21C 部署ogg踩过的坑
  • vue3 中播放.flv视频
  • Oracle AWR报告中Load Profile源码
  • 电子商务网站开发的任务书企业文化心得体会
  • 溧阳网站开发kindeditor代码高亮 wordpress
  • CSS常见问题
  • nginx 负载均衡配置
  • 原生 iOS 开发全流程实战,Swift 技术栈、工程结构、自动化上传与上架发布指南
  • Apache开源许可证:深度解析与实践指南
  • Python Web开发——HTTP协议简介
  • 病理切片可解释性分析-细胞类型、核形态与细胞间相互作用
  • 【C语言】杨辉三角:数学之美与编程实现的完美结合
  • 盐城网站建设策划方案杭州企业求网站建设