如何在重装Linux系统时保留Docker容器及重要数据

各位大佬好,我遇到了一个棘手的问题,希望能得到帮助。

我的环境:

  • CentOS 7.9.2009 x86_64云服务器
  • 宝塔面板
  • 部署内容:1个PHP站点,2个自建网站,2个API,5个反向代理,1个Docker容器(含重要数据),1个内网穿透

当前情况:
由于不可控因素,我必须重装系统。服务器只有一个弹性硬盘,所有数据都在同一分区。

我的困扰:

  1. PHP站点、自建网站等可以通过常规备份解决。(当然这是十分麻烦的,如果有更简单的解决办法,请务必告诉我)
  2. 最大问题是Docker容器中的重要数据,不知如何备份。宝塔面板似乎没有相关备份策略。
  3. 容器中的数据对我极其重要,不想丢失任何内容。

我的疑问:

  1. 如何备份Docker容器中的数据?
  2. 是否可能在保留容器和指定目录数据的情况下重装系统?

恳请各位大佬指点,非常感谢!

5 个赞

蹲一个,同样需要

1 个赞

帮顶

打包docker镜像和映射目录好像可以

docker好像是可以导出数据卷的,你搜搜

一个一个打包感觉也是有点费神

我都是写脚本自动化打包的。。

我是把所有容器都映射在 /data 目录,备份打包一个/data就行了

等一个佬的开源 :bili_040:

这方法不错,就是要提前管理

1 个赞

除了手动映射的目录,其余的数据默认都在/var/lib/docker路径下,直接打包这个。记得停止docker服务后操作

保险点最好先打个磁盘快照

1 个赞

第一点,看你当时 docker 是如何设置的:1、docker 容器可以导出的;2、docker info 可以看到容器存放的根目录,看能不能直接用,这个我没试过;
第二点应该看你云服务器提供商是否支持吧

1 个赞

直接打包镜像,上传到阿里私有镜像空间,可以写一个shell脚本做成批量操作

docker export <container_id> > container.tar
cat container.tar | docker import - image-name:tag
1 个赞

容器为什么要保留,有镜像就可以起啊。数据就备份啊。个人主机我使用 Btrfs 子卷快照

1 个赞

如果docker容器中关键数据有挂载到宿主机的话,那备份对应的文件夹数据就行了,没得话,估计就像上面说的,用docker export

创建容器的时候有映射存储文件夹的话就很简单。

1 个赞

打包容器,可以push到云也可以就在本地,到时候加载本地包或者直接下载你自己打包的文件就行。

收藏备用

/var/lib/docker 都在这

有佬友分享了,请看Docker 数据管理:备份和恢复指南
希望能帮到你,另外,推荐用compose来管理docker,更要把数据挂载出来,这样只需要把compose文件和挂载目录一起打包压缩就能在任意一台有安装docker的主机上恢复