首页 > 其他分享 >如何恢复已经删除的 docker 容器的数据

如何恢复已经删除的 docker 容器的数据

时间:2024-01-20 20:33:47浏览次数:40  
标签:容器 删除 volume volumes 挂载 docker

前言

使用 docker 自带的 volume 机制进行数据的持久化,docker会在宿主机的特定位置(/var/lib/docker/volumes)维护各个volumes,

面对容器删除的问题,有如下几个结论:

  • 容器启动(docker run)时,即使没有显示的指定-v -mount参数,容器的相关数据已经被作为volumes持久化存储了,比如在/var/lib/docker/volumes下面,所以数据是在的。
  • 但如果 docker run时,显示指定使用了tmpfs的mount类型,删除容器时才会被清理。
  • 或者如果docker rm时指显示定了-v参数,也会连带删除容器依赖的volumes数据。

所以,只要没有手残强制使用了临时存储或者删除时强制指定了删除数据,数据还是在的。

如何恢复

    1. 找到删除容器对应的volumes
    1. 基于一样的镜像启动新的容器
    1. 将之前的volumes迁移/挂载到新的容器上

怎么找到删除容器的volumes

通过ls或者du等命令来观察目录的创建时间和大小,来推断删除容器的volumes是哪(几)个。比如mysql的容器,那么大小一般比较大

注: 找到volume后先进行备份

启动新的容器

基于之前的镜像,直接启动容器,通过inspect命令查看新容器的volume名称。

docker inspect 容器ID

如果对于镜像的使用比较了解了,则可以直接在启动时,将找到的volumes挂载到正确的位置即可略过第3步骤:将之前的volumes迁移/挂载到新的容器上

将之前的volume迁移/挂载到新的容器上

  • 执行docker stop 新容器停止新容器。
  • 使用mv命令,在/var/lib/docker/volumes中将步骤1获取的目录的名称修改为步骤2获取的新容器的目录名称:mv 旧的volume名称 新的volume名称。
  • 执行docker start 新容器再次启动新容器。

参考

不小心删除了docker容器怎么恢复?

标签:容器,删除,volume,volumes,挂载,docker
From: https://www.cnblogs.com/strongmore/p/17964046

相关文章

  • Ubuntu20.04部署docker环境
    1.卸载旧的docker版本forpkgindocker.iodocker-docdocker-composepodman-dockercontainerdrunc;doapt-getremove$pkg;done2.切换国内的软件源cat>/etc/apt/sources.list<<EOFdebhttps://mirrors.aliyun.com/ubuntu/focalmainrestricteduniversemultiv......
  • 使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kiba
    前言ELK是指Elasticsearch、Logstash和Kibana这三个开源软件的组合。Elasticsearch是一个分布式的搜索和分析引擎,用于日志的存储,搜索,分析,查询。Logstash是一个数据收集、转换和传输工具,用于收集过滤和转换数据,然后将其发送到Elasticsearch或其他目标存储中。Kiba......
  • docker之离线安装和在线安装
    一、离线安装1、软件包下载https://download.docker.com/linux/static/stable/x86_64/2、安装dockertarxvf/opt/docker-24.0.7.tgz-C/usr/local/cd/usr/local/cpdocker/*/usr/bin/tee/etc/systemd/system/docker.service<<EOF[Unit]Description=DockerApplic......
  • leedcode 删除有序数组中的重复项
    classSolution:#12234defremoveDuplicates(self,nums):nums_len=len(nums)#5ifnums_len==0:returnnums_lenifnums_len==1:returnnums_lenflag=Truei=0whilef......
  • Spring IOC 容器加载过程详解
    在Spring框架中,IOC(InversionofControl)容器是核心的概念之一。IOC容器负责管理和装配各个组件,本文将详细介绍SpringIOC容器的加载过程,包括如何配置、初始化和装配Bean。1.什么是IOC容器IOC容器是Spring框架的一个关键组件,负责管理Java对象的生命周期、配置信息以及对象之间的......
  • 【Python】查找和删除表格中的重复行
    查找:importpandasaspddf=pd.read_excel("秘籍.xlsx")#打开list1=[]foriinrange(df.shape[0]):#总行数list1.append(list(df.values[i]))#将每行以列表的形式装入列表forxinlist1:iflist1.count(x)>1:#如果列表中元素出现次数>1prin......
  • 30_删除二叉搜索树中的节点
    450.删除二叉搜索树中的节点给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的key对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例1:......
  • Docker Desktop 换源
    Docker中国区官方镜像:https://registry.docker-cn.com中科大镜像源:https://docker.mirrors.ustc.edu.cn/网易镜像源:http://hub-mirror.c.163.com/腾讯镜像源:https://mirror.ccs.tencentyun.com打开DockerDesktop,在Settings>DockerEngine中,添加如下内容:"registry-......
  • 教你如何在Kali中安装docker
    1、安装https协议、CA证书、dirmngrapt-getupdateapt-getinstall-yapt-transport-httpsca-certificatesapt-getinstalldirmngr-y2、添加GPG密钥并添加更新源curl-fsSLhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg|sudoapt-keyadd-e......
  • DockerFile中build文件失败
    DockerFile中build文件失败出现的问题:failedtoreaddockerfile:open/var/lib/docker/tmp/buildkit-mount2314644203/Dockerfile:nosuchfileordirectory图片如下:导致问题的原因:创建的文件的名称首字母大写中间的字母不需要大写。图片如下:解决方案:将文件名称修改成小写......