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

本文详细介绍了如何恢复意外删除的docker容器,包括理解docker的Volume机制,如何找到删除容器的volumes,以及如何基于相同镜像启动新容器并迁移挂载volumes,从而恢复应用、状态和数据。

如果不小心执行了docker rm 容器A,通过查找到docker volumes中删除容器的数据,将其挂载到新启动的容器中,即可恢复应用+状态+数据。

背景

docker作为优秀的开源容器引擎,能够像集装箱一样以一种非常标准化、轻量、可移植的方式帮助我们进行开发、交付和运行应用程序。

当镜像运行起来成为容器时会需要相关的存储资源来支撑软件服务的运行,如存储的日志文件,用户传入的数据,伴随运行生成的文件等。

由于docker运行程序实在是太便利了,在有些时候,一些用于调试的docker项目(自研、开源),不知不觉就投入了使用,并没有对数据做很合理安全的配置(挂载,备份),此后如果一不小心删除了运行中的容器,再启动镜像时,就会发现这是一个全新的服务,之前程序运行过程中积累的状态数据、用户数据、日志数据不复存在。

最近就遇到了这个问题:之前调研了一个开源的OA系统,在测试阶段,很好用,对接了内部的认证系统后,很多同事纷纷上去试用,不知不觉积累了很多数据。

直到有一天,运维同事在这个开发环境为了升级相关服务,便执行了如下容器删除语句:

docker rm {这个OA容器}

当天晚上,很多行政同事就炸锅了,反馈以为是正式环境,自己这一周的相关报表、报告都在上面。

怎么办?

### 在 Docker 容器删除文件的方法 在 Docker 容器删除文件的方法与在普通 Linux 系统中删除文件的方式相同,因为容器内部运行的是一个隔离的 Linux 环境。可以使用标准的 `rm` 命令来删除文件或目录。以下是具体操作方法: 1. **进入容器**:首先需要通过 `docker exec` 命令进入目标容器的交互式终端。 ```bash docker exec -it <container_name_or_id> /bin/bash ``` 例如,如果容器名称为 `mycentos2`,则命令为: ```bash docker exec -it mycentos2 /bin/bash ``` 2. **删除文件**:进入容器后,可以使用 `rm` 命令删除指定的文件或目录。 - 删除单个文件: ```bash rm /path/to/file ``` - 删除目录及其内容(需要加上 `-r` 参数以递归删除): ```bash rm -r /path/to/directory ``` - 强制删除提示确认): ```bash rm -rf /path/to/directory ``` 3. **退出容器**:完成文件删除后,可以通过输入 `exit` 命令退出容器的交互式终端。 需要注意的是,删除文件的操作是可逆的,因此在执行 `rm` 命令时应格外小心[^1]。 ### 示例代码 以下是一个完整的示例,展示如何进入容器删除指定文件: ```bash # 进入容器 docker exec -it mycentos2 /bin/bash # 删除文件 rm /path/to/file # 或者删除目录 rm -rf /path/to/directory # 退出容器 exit ``` ### 数据持久化注意事项 如果容器中的数据非常重要,建议在删除前将数据备份到主机上。可以使用 `docker cp` 命令将容器中的文件复制到主机上: ```bash docker cp <container_name_or_id>:/path/in/container /path/on/host ``` 例如: ```bash docker cp mycentos2:/data/a.txt /backup/ ``` 这样即使容器删除,数据仍然保留在主机上[^3]。 ### 日志清理 如果需要删除容器的日志文件,可以通过以下命令找到日志文件路径并进行清理: ```bash # 查找容器日志路径 /var/lib/docker/containers/<container_id>/<container_id>-json.log # 清理日志文件 echo "" > /var/lib/docker/containers/<container_id>/<container_id>-json.log ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值