linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

13. 数据管理

  • 简介
  • 数据卷
    • 创建数据卷
    • 启动一个挂载数据卷的容器
    • 查看挂载信息
    • 删除数据卷
  • 挂载主机目录
    • 基本用法
    • 使用 -v 参数(传统方式)
  • 最佳实践

简介

Docker 提供了多种方式来保证容器中的数据持久化,主要包括:

  • 数据卷 (Volumes): Docker 管理的持久化数据
  • 挂载主机目录 (Bind Mounts): 将主机目录直接挂载到容器
  • tmpfs 挂载: 将数据存储在内存中

数据卷

数据卷是 Docker 引擎管理的持久化存储,具有以下特点:

  • 支持多容器共享和重用
  • 数据修改实时生效
  • 数据更新不影响镜像
  • 数据持久化存储,独立于容器生命周期
  • 支持多种存储后端驱动

注意: 挂载数据卷会隐藏容器中对应目录的文件,类似 Linux 的 mount 机制

创建数据卷

# 创建数据卷
docker volume create my-vol

# 查看所有数据卷
docker volume ls 

# 查看数据卷详细信息
docker volume inspect my-vol 

启动一个挂载数据卷的容器

Docker 提供两种方式挂载数据卷:

# 使用 --mount 参数(推荐)
docker run -d -P --name web \
    --mount source=my-vol,target=/webapp \
    training/webapp \
    python app.py

# 使用 -v 参数(传统方式)
docker run -d -P --name web \
    -v my-vol:/webapp \
    training/webapp \
    python app.py

参数说明:

  • source: 数据卷名称或主机路径
  • target: 容器内挂载路径
  • readonly: 可选,设置只读权限

查看挂载信息

# 查看容器挂载信息
docker inspect web --format '{{ .Mounts }}'

# 查看详细配置
docker inspect web

删除数据卷

# 删除指定数据卷
docker volume rm my-vol

# 清理无主数据卷
docker volume prune

注意: 如果要在删除容器时同时删除数据卷,请使用 docker rm -v 命令

挂载主机目录

基本用法

# 挂载主机目录
docker run -d -P \
    --name web \
    --mount type=bind,source=/src/webapp,target=/opt/webapp \
    training/webapp \
    python app.py

# 挂载为只读
docker run -d -P \
    --name web \
    --mount type=bind,source=/src/webapp,target=/opt/webapp,readonly \
    training/webapp \
    python app.py

使用 -v 参数(传统方式)

docker run -d -P \
    --name web \
    -v /src/webapp:/opt/webapp \
    training/webapp \
    python app.py

最佳实践

  1. 数据卷使用建议

    • 优先使用数据卷而不是 bind mount
    • 使用有意义的卷名
    • 定期备份重要数据
  2. 安全建议

    • 谨慎使用 bind mount
    • 限制容器对主机目录的访问权限
    • 避免挂载敏感目录
  3. 性能优化

    • 避免挂载大量小文件
    • 合理使用 tmpfs 挂载
    • 选择合适的存储驱动

参考资料:

  • Docker 官方文档 - Volumes
  • Docker 官方文档 - Bind mounts
最近更新时间:
Prev
12. docker-hub加速器
Next
14. 使用网络