#在docker中启动mysql之类的容器时,没有挂载的数据...在后期怎么把数据导出外部

如果要导出 Docker 容器内的 整个目录(包含所有文件及子目录),可以使用以下几种方法:


方法 1:使用 docker cp 直接复制目录到宿主机

适用场景:容器正在运行或已停止(但未删除)。
命令格式

docker cp <容器名或ID>:<容器内目录路径> <宿主机目标路径>

示例(导出 MySQL 容器的 /var/lib/mysql 数据目录):

docker cp mysql_container:/var/lib/mysql /host/backup/mysql_data
  • 说明
    • /host/backup/mysql_data 是宿主机上的目标路径(需提前创建)。
    • 导出后,宿主机上会得到一个完整的 mysql_data 目录,包含所有文件。

ps : 也可以将文件复制进容器内部
docker cp <宿主机文件或目录路径> <容器名或ID>:<容器内目标路径>
示例:

复制单个文件到容器的 /tmp 目录: docker cp /host/path/file.txt mycontainer:/tmp/

复制整个目录到容器的 /app/data 目录:docker cp /host/path/folder/ mycontainer:/app/data/

注意:如果目标路径以 / 结尾(如 /app/data/),Docker 会将目录内容复制到该路径下。
如果不以 / 结尾(如 /app/data),Docker 会将整个目录作为子目录复制。


方法 2:启动临时容器挂载目录并复制

适用场景:容器已删除,但数据仍在匿名卷中。
步骤

  1. 查找容器的匿名卷
    docker volume ls  # 找到与容器关联的匿名卷(如 `abcd1234...`)
    
  2. 启动临时容器挂载匿名卷并复制数据
    docker run --rm -v <匿名卷名>:/source -v /host/backup:/backup alpine \sh -c "cp -r /source /backup/mysql_data"
    
    • 示例
      docker run --rm -v abcd1234:/var/lib/mysql -v /home/user/backup:/backup alpine \sh -c "cp -r /var/lib/mysql /backup/mysql_data"
      

方法 3:通过 docker commit 创建镜像再导出

适用场景:容器已停止或损坏,但文件系统仍可访问。
步骤

  1. 将容器保存为新镜像
    docker commit <容器名或ID> temp_mysql_image
    
  2. 启动临时容器并导出目录
    docker run --rm -v /host/backup:/backup temp_mysql_image \sh -c "cp -r /var/lib/mysql /backup/mysql_data"
    
  3. 清理临时镜像
    docker rmi temp_mysql_image
    

方法 4:直接访问 Docker 存储驱动数据(高级)

适用场景:容器已删除且无匿名卷,但数据仍在 Docker 存储目录中(如 overlay2)。
步骤

  1. 找到容器的存储层
    docker inspect <容器名或ID> | grep "MergeDir"
    
    • 输出类似:"MergeDir": "/var/lib/docker/overlay2/abcd1234/merged"
  2. 直接复制数据
    cp -r /var/lib/docker/overlay2/<容器ID>/merged/var/lib/mysql /host/backup/mysql_data
    
    • 注意:需 root 权限,且路径因 Docker 存储驱动而异(如 overlay2aufs)。

验证导出的数据

检查宿主机上的目录结构和文件:

ls -l /host/backup/mysql_data
  • 如果导出的是 MySQL 数据,应能看到 .ibd.frm 等文件。

如何避免未来数据丢失?

  1. 始终挂载数据卷
    docker run -v /host/mysql_data:/var/lib/mysql mysql
    
  2. 使用命名卷(Docker 自动管理):
    docker run -v mysql_data:/var/lib/mysql mysql
    
  3. 定期备份
    docker exec mysql_container sh -c 'mysqldump -u root -p$MYSQL_ROOT_PASSWORD --all-databases > /backup.sql'
    docker cp mysql_container:/backup.sql /host/backup.sql
    

总结表格

方法适用场景命令示例
docker cp容器仍在运行或存在docker cp mysql:/var/lib/mysql /backup
匿名卷挂载容器已删除但卷存在docker run --rm -v <卷名>:/source -v /backup:/backup alpine cp -r /source /backup
docker commit容器损坏但文件系统可读docker commit + 临时容器复制
直接访问存储层紧急恢复(需 root 权限)/var/lib/docker/overlay2/<ID>/merged 复制数据

选择最适合你场景的方法,确保数据安全! 🔐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的JDK、JRE、JVM关系与作用

Java的JDK、JRE、JVM关系与作用 java中的JDK、JRE和JVM是三个核心组件&#xff0c;各自承担不同角色&#xff0c;且存在层级依赖关系 1. JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09; 是什么&#xff1a; JVM是虚拟的计算机&#xff0c;能够执行…

C++学习之套接字并发服务器

目录 1.昨天套接字服务器的弊端 2.如何通过多进程方式实现服务器并发 3.多进程服务器-1 4.多进程服务器-2 5.多进程版程序-回收子进程被信号中断的处理 6.多线程版TCP服务处理思路 7.多线程并发服务器编写 8.为什么不能把文件描述符地址传到子线程中 9.多线程程序测试 …

机器学习新范式:Kubernetes + Kubeflow,解锁模型训练与部署的高效密码

一、Kubernetes在机器学习模型训练与部署中的作用 Kubernetes作为一个强大的容器编排平台&#xff0c;为机器学习模型的训练与部署提供了以下核心支持&#xff1a; 分布式训练支持&#xff1a;Kubernetes能够自动化部署和管理PyTorch等机器学习框架的分布式训练任务。通过利用…

动态科技感html导航网站源码

源码介绍 动态科技感html导航网站源码&#xff0c;这个设计完美呈现了科幻电影中的未来科技界面效果&#xff0c;适合展示技术类项目或作为个人作品集的入口页面&#xff0c;自适应手机。 修改卡片中的链接指向你实际的HTML文件可以根据需要调整卡片内容、图标和颜色要添加更…

数字内容智能推荐优化策略

个性化推荐算法构建路径 构建高效数字内容体验的推荐系统&#xff0c;需以多源数据融合为基础框架。首先通过用户画像建模整合人口属性、行为轨迹及兴趣标签&#xff0c;结合协同过滤与深度学习算法建立内容关联矩阵。在此基础上&#xff0c;引入上下文感知机制&#xff0c;动…

# 深度学习中的优化算法详解

深度学习中的优化算法详解 优化算法是深度学习的核心组成部分&#xff0c;用于最小化损失函数以更新神经网络的参数。本文将详细介绍深度学习中常用的优化算法&#xff0c;包括其概念、数学公式、代码示例、实际案例以及图解&#xff0c;帮助读者全面理解优化算法的原理与应用…

汽车的四大工艺

文章目录 冲压工艺核心流程关键技术 焊接工艺核心流程 涂装工艺核心流程 总装工艺核心流程终检与测试静态检查动态检查四轮定位制动转鼓测试淋雨测试总结 简单总结下汽车的四大工艺&#xff08;从网上找了一张图&#xff0c;感觉挺全面的&#xff09;。 冲压工艺 将金属板材通过…

Perl 发送邮件

Perl 发送邮件 概述 Perl 是一种强大的编程语言&#xff0c;广泛应用于系统管理、网络编程和数据分析等领域。其中&#xff0c;使用 Perl 发送邮件是一项非常实用的技能。本文将详细介绍使用 Perl 发送邮件的方法&#xff0c;包括必要的配置、代码示例以及注意事项。 准备工…

关于柔性数组

以前确实没关注过这个问题&#xff0c;一直都是直接定义固定长度的数组&#xff0c;尽量减少指针的操作。 柔性数组主要是再结构体里面定义一个长度为0的数组&#xff0c;这里和定义一个指针式存在明显去别的。定义一个指针会占用内存&#xff0c;但是定义一个长度为0的数组不会…

NOIP2011提高组.玛雅游戏

目录 题目算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化思路*详细注释版代码精简注释版代码 题目 185. 玛雅游戏 算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化 思路 可行性剪枝 如果某个颜色的格子数量少于 3 3 3一定无解因为要求字典序最小, 因此当一个格子左边有…

go游戏后端开发29:实现游戏内聊天

接下来&#xff0c;我们再来开发一个功能&#xff0c;这个功能相对简单&#xff0c;就是聊天。在游戏里&#xff0c;我们会收到一个聊天请求&#xff0c;我们只需要做一个聊天推送即可。具体来说&#xff0c;就是谁发的消息&#xff0c;就推送给所有人&#xff0c;包括消息内容…

基于大数据的美团外卖数据可视化分析系统

【大数据】基于大数据的美团外卖数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统通过对海量外卖数据的深度挖掘与分析&#xff0c;能够为美团外卖平台提供运营决策支…

[ctfshow web入门] web32

前置知识 协议相关博客&#xff1a;https://blog.csdn.net/m0_73353130/article/details/136212770 include&#xff1a;include "filename"这是最常用的方法&#xff0c;除此之外还可以 include url&#xff0c;被包含的文件会被当做代码执行。 data://&#xff1a…

kotlin中const 和val的区别

在 Kotlin 中&#xff0c;const 和 val 都是用来声明常量的&#xff0c;但它们的使用场景和功能有所不同&#xff1a; 1. val: val 用于声明只读变量&#xff0c;也就是不可修改的变量&#xff08;类似于 Java 中的 final 变量&#xff09;。它可以是任何类型&#xff0c;包括…

【STM32】综合练习——智能风扇系统

目录 0 前言 1 硬件准备 2 功能介绍 3 前置配置 3.1 时钟配置 3.2 文件配置 4 功能实现 4.1 按键功能 4.2 屏幕功能 4.3 调速功能 4.4 倒计时功能 4.5 摇头功能 4.6 测距待机功能 0 前言 由于时间关系&#xff0c;暂停详细更新&#xff0c;本文章中&#xff0c;…

任务扩展-输入商品原价,折扣并计算促销后的价格

1.在HbuilderX软件中创建项目&#xff0c;把项目的路径放在xampp中的htdocs 2.创建php文件&#xff1a;price.php,price_from.php 3.在浏览器中&#xff0c;运行项目效果&#xff0c;通过xampp中admin进行运行浏览&#xff0c;在后添加文件名称即可&#xff0c;注意&#xff…

3D Gaussian Splatting as MCMC 与gsplat中的应用实现

3D高斯泼溅(3D Gaussian splatting)自2023年提出以后,相关研究paper井喷式增长,尽管出现了许多改进版本,但依旧面临着诸多挑战,例如实现照片级真实感、应对高存储需求,而 “悬浮的高斯核” 问题就是其中之一。浮动高斯核通常由输入图像中的曝光或颜色不一致引发,也可能…

【软件测试】Postman中如何搭建Mock服务

在 Postman 中&#xff0c;Mock 服务是一项非常有用的功能&#xff0c;允许你在没有实际后端服务器的情况下模拟 API 响应。通过创建 Mock 服务&#xff0c;你可以在开发阶段或测试中模拟 API 的行为&#xff0c;帮助团队成员进行前端开发、API 测试和集成测试等工作。 Mock 服…

Spring-MVC

Spring-MVC 1.SpringMVC简介 - SpringMVC概述 SpringMVC是一个基于Spring开发的MVC轻量级框架&#xff0c;Spring3.0后发布的组件&#xff0c;SpringMVC和Spring可以无缝整合&#xff0c;使用DispatcherServlet作为前端控制器&#xff0c;且内部提供了处理器映射器、处理器适…

关于Spring MVC中@RequestParam注解的详细说明,用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格

以下是关于Spring MVC中RequestParam注解的详细说明&#xff0c;用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格&#xff1a; 1. 核心作用 RequestParam用于显式绑定HTTP请求参数到方法参数&#xff0c;支持以下场景&#xff1a; 参数名不一致&#xff1…