Docker使用数据卷挂载进行数据存储与共享

一、挂载和数据卷

在 Docker 中,挂载(Mounting)和数据卷(Data Volumes)是用于在容器和宿主机之间共享数据的机制。

  • 挂载:将宿主机文件系统中的目录或文件与容器中的目录或文件进行关联的过程。
  • 数据卷:一种特殊的目录,可以绕过容器文件系统,直接与宿主机文件系统进行交互。

1.1 为什么要使用数据卷?

  • 如果数据都在容器中,那么把容器删除以后,数据也会随之丢失,所以要把数据进行数据持久化。
    如:mysql容器,容器删了,里面的数据就都没了
  • 容器之间可以有一个数据共享的技术,使得容器和宿主机实现数据共享。Docker容器中产生的数据,也会同步到宿主机中。

1.2 使用数据卷的好处?

  • 如修改数据库的配置文件还要进入容器里面修改,比较麻烦。当挂载以后只需要在本地修改会即可,容器会自动同步。
    • 挂载以后会占用磁盘两份存储,即容器内占一份,宿主机占一份。
  • 挂载以后,删除容器以后,宿主机对应的挂载目录不会删除。

二、挂载数据卷的方式

可以直接使用docker run -it -v命令来实现数据卷挂载,挂载数据卷命令如下:

powershell 复制代码
docker run -it -v 宿主机路径:容器内路径

其中,宿主机路径为绝对路径,

容器起来以后挂载以后使用docker inspect 容器id 查看目录是否挂载成功

powershell 复制代码
docker inspect 容器id
# 搜索Mounts,这里面就是目录的挂载信息
#   Source:主机内路径
#   Destination:docker容器内的路径
# 如果Mounts这里不展示挂载信息,就说明是挂载失败了

三、具体样例

powershell 复制代码
sudo docker run -it -v /home/Project/data:/data test:1.0

挂载信息如下:

  • 宿主机路径:/home/Project/data
  • 容器路径:/data
  • 镜像名称:image-test:1.0

接下来,我们可以查看容器是否正常启动运行起来:

powershell 复制代码
sudo docker ps -a

查看容器挂载信息:

powershell 复制代码
sudo docker inspect 921ea03a66ea

搜索Mounts,这里面就是目录的挂载信息,其中:

  • Source:主机内路径
  • Destination:docker容器内的路径

如果Mounts这里不展示挂载信息,就说明是挂载失败了。

注意:实现数据卷挂载以后,容器停止以后,往宿主机的挂载目录写入对应的数据,此时数据也会同步到容器内对应的目录。

相关推荐
云贝贝贝4 小时前
腾讯云 TDSQL(MySQL 版)运维高频 6 坑:代理路由、读写分离、分片键、监控、PITR
运维·mysql·腾讯云
小五传输4 小时前
FTP替代怎么做?医院文件安全传输选型与迁移指南
大数据·运维·安全
金智维科技官方4 小时前
财务核算如何提效?这三条核心链路正在加速自动化
运维·人工智能·ai·自动化·财务·智能体
新时代牛马5 小时前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器
luckystar513~5 小时前
Hermes 实战 :系列收官/生产化——安全审计与运维
运维·人工智能·安全·agent·智能体开发·hermes实战·智能体网关
大模型码小白6 小时前
AI大模型接入SDK:人工智能核心概念与发展史
大数据·运维·人工智能·安全·prompt
野熊佩骑6 小时前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
小HANN6 小时前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
前端世界7 小时前
基于 Linux 的本地 AI 智能问答平台搭建实践 —— Ollama + FastAPI + Nginx 实现本地大模型 Web 服务
linux·运维·人工智能
山岚的运维笔记7 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba