20250706-12-Docker快速入门(下)-容器数据持久化_笔记

一、容器数据持久化



  • 必要性:容器删除后数据会丢失,需要将关键数据持久化到宿主机
  • 两种主要方式:
    • volumes:Docker管理的宿主机文件系统部分(

      /var/lib/docker/volumes/var/lib/docker/volumes/var/lib/docker/volumes

      )
    • bind mounts:挂载宿主机任意位置到容器
1. volumes



  • 管理方式:由Docker自动管理,存储在固定目录

    /var/lib/docker/volumes/var/lib/docker/volumes/var/lib/docker/volumes

  • 特点:
    • 是Docker官方推荐的数据持久化方式
    • 目录位置固定不可更改
    • 适合需要Docker管理数据卷的场景
1)volumes示例



  • 创建数据卷:
  • 使用数据卷:
2. bind mounts
  • 特点:
    • 可挂载宿主机任意目录到容器
    • 会覆盖容器目标目录原有内容
    • 更灵活,是目前更常用的方式
  • 工作原理:宿主机目录内容会"覆盖"容器目标目录
1)bind mounts示例



3. 应用案例

1)例题:容器数据持久化命令示例

  • 案例演示:
    • 创建宿主机目录:
    • 启动容器并挂载:
    • 验证数据持久化:
      • 在容器中修改文件会反映到宿主机
      • 删除容器后重新创建,数据仍然存在
4. 制作镜像



  • 重要原则:
    • 将应用程序产生的数据集中放在一个目录(如/data)
    • 不要将已生成的应用数据打包进镜像
    • 只持久化容器启动后产生的数据
  • 最佳实践:
    • 服务如nginx、gitlab等都采用-v挂载数据目录
    • 便于容器重建和数据迁移
二、知识小结

知识点

核心内容

易混淆点/注意事项

应用场景

容器数据持久化原理

容器重启不会丢失数据,但删除容器会导致数据丢失;持久化需将数据存储到宿主机

容器删除与重启对数据的影响差异

需要保留关键数据的容器化服务(如数据库、日志服务)

Volume 数据卷

Docker 管理的宿主机文件系统部分,存储在固定目录(/var/lib/docker/volumes)

Volume 目录不可自定义,仅限 Docker 管理

Docker 默认推荐的持久化方式

Bind Mount 挂载

允许将宿主机任意目录挂载到容器中,直接覆盖容器目标目录

宿主机空目录会覆盖容器目录内容,需预先准备数据

灵活指定宿主机目录(如 Nginx 网站根目录)

持久化实践步骤

1. 创建宿主机目录

2. 启动容器时通过 -v 挂载目录

3. 容器数据实时同步到宿主机

容器内持久化目录需与应用数据目录一致

服务迁移、数据备份、多容器共享数据

镜像构建原则

1. 应用程序运行时数据集中存放

2. 禁止将已生成数据打包进镜像

镜像模板数据 vs 运行时持久化数据

标准化镜像开发流程

Nginx 持久化案例

挂载宿主机目录到 /usr/share/nginx/html,修改内容后删除容器仍保留数据

403 错误可能因宿主机目录权限导致

Web 服务静态资源管理

数据卷 vs Bind Mount

- Volume:Docker 托管,固定路径

- Bind Mount:自定义路径,更高灵活性

两者均实现持久化,但管理方式不同

根据需求选择托管或自主管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值