各位大佬好,我遇到了一个棘手的问题,希望能得到帮助。
我的环境:
- CentOS 7.9.2009 x86_64云服务器
- 宝塔面板
- 部署内容:1个PHP站点,2个自建网站,2个API,5个反向代理,1个Docker容器(含重要数据),1个内网穿透
当前情况:
由于不可控因素,我必须重装系统。服务器只有一个弹性硬盘,所有数据都在同一分区。
我的困扰:
- PHP站点、自建网站等可以通过常规备份解决。(当然这是十分麻烦的,如果有更简单的解决办法,请务必告诉我)
- 最大问题是Docker容器中的重要数据,不知如何备份。宝塔面板似乎没有相关备份策略。
- 容器中的数据对我极其重要,不想丢失任何内容。
我的疑问:
- 如何备份Docker容器中的数据?
- 是否可能在保留容器和指定目录数据的情况下重装系统?
恳请各位大佬指点,非常感谢!
5 个赞
Feng
(FENG)
8
我是把所有容器都映射在 /data 目录,备份打包一个/data就行了
strend
(思特蓝)
11
除了手动映射的目录,其余的数据默认都在/var/lib/docker
路径下,直接打包这个。记得停止docker服务后操作
保险点最好先打个磁盘快照
1 个赞
第一点,看你当时 docker 是如何设置的:1、docker 容器可以导出的;2、docker info 可以看到容器存放的根目录,看能不能直接用,这个我没试过;
第二点应该看你云服务器提供商是否支持吧
1 个赞
jenny
(jenny)
13
直接打包镜像,上传到阿里私有镜像空间,可以写一个shell脚本做成批量操作
docker export <container_id> > container.tar
cat container.tar | docker import - image-name:tag
1 个赞
admini
(admini)
14
容器为什么要保留,有镜像就可以起啊。数据就备份啊。个人主机我使用 Btrfs 子卷快照
1 个赞
CodeWu
(CodeWu)
15
如果docker容器中关键数据有挂载到宿主机的话,那备份对应的文件夹数据就行了,没得话,估计就像上面说的,用docker export
打包容器,可以push到云也可以就在本地,到时候加载本地包或者直接下载你自己打包的文件就行。
Zim
20
有佬友分享了,请看Docker 数据管理:备份和恢复指南
希望能帮到你,另外,推荐用compose来管理docker,更要把数据挂载出来,这样只需要把compose文件和挂载目录一起打包压缩就能在任意一台有安装docker的主机上恢复