【Docker】docker的数据持久化

在 Docker 中,容器的文件系统是临时的。如果容器被删除或重新创建,所有未保存的数据都会丢失。为了解决这个问题,我们可以使用以下两种方式来持久化数据:

方式一: 使用Bind Mounts实现数据持久化

Bind Mounts 允许你将宿主机文件系统中的目录或文件挂载到容器内的某个目录。这种方式非常直接,适合在开发和测试环境中使用。

案例:运行一个Nginx 容器,并将宿主机上的 html 目录挂载到容器内的 /usr/share/nginx/html 目录。

python 复制代码
# 宿主机创建一个目录,用于存放数据
mkdir /root/mdynginx/html/

# 创建容器,指定挂载路径
docker run -d -p 80 --name mdynginx -v /root/mdynginx/html/:/usr/share/nginx/html/ nginx:1.26

方式二: 使用Volume实现数据持久化

Volumes 是 Docker 推荐的持久化数据方式,因为它们独立于宿主机的文件系统,并由 Docker 管理,适合生产环境使用。

  • 1,创建一个Volume,命名为mdyvolume
python 复制代码
docker volume create mdyvolume

# 查看volume列表
docker volume ls
  • 2,运行容器,并使用
python 复制代码
docker run -d -p 80 --name mdynginx2 -v mdyvolume:/usr/share/nginx/html nginx:1.26
  • 3,查看volume中的数据
python 复制代码
docker volume inspect mdyvolume

[
    {
        "CreatedAt": "2024-08-18T09:53:46+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mdyvolume/_data",  # 该路径为数据持久存储位置
        "Name": "mdyvolume",
        "Options": null,
        "Scope": "local"
    }
]

以上两种方式存储,删除容器后,再次创建容器,数据依然存在,做到持久化!

相关推荐
SimonKing21 小时前
文档杂乱怎么查找:用 Papra 搭一个极简文档管理系统
java·后端·程序员
captain37621 小时前
网络原理(7)-NAT(Network Address Translation)
java·网络·网络协议·java-ee
jaysee-sjc21 小时前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
雨辰AI21 小时前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端
AI深栈21 小时前
第 12 章 · AI智能体的结构化输出与流式响应
java·人工智能
j7~1 天前
【C++微服务项目开发脚手架】(环境篇)虚拟机 + Docker + MySQL/Redis/RabbitMQ/ES/etcd/FastDFS 全套配齐
linux·c++·ubuntu·docker·vmware·项目开发·微服务脚手架
君顾11 天前
本地AI错题纠正小程序:端侧推理与错题闭环实战
java·开发语言·错题
Wang's Blog1 天前
Java 服务器: Linux-yum在线安装与lrzsz文件传输
java·服务器
天天喝旺仔1 天前
Go 泛型实战:从类型参数、约束到可复用泛型容器与函数
数据结构·算法·容器·go
Java内核笔记1 天前
Spring Boot 4 与 Spring AI 2.0 深度集成:ChatClient、Advisor 链与 MCP(源码级实战)
java·后端