1
daisyfloor 82 天前 1
所有数据都在 docker-compose.yml 文件所在目录 project 及其子目录里。
自动定期备份 project 目录即可。 yml 配置文件里所有容器的数据和配置目录映射都采用相对路径,映射到 project 里对应 service 的子目录里。(不适用卷) 如果当前机器遇到问题。或者换机器,换盘。只需要把备份的 project 目录解压过去,然后 docker compose up -d 即可。 |
2
neroxps 82 天前 1
@daisyfloor volume 还是得处理下,有些容器不小心没加上 volume 就 GG
|
3
liununu 82 天前 via iPhone 1
之前 star 过一个工具 https://github.com/offen/docker-volume-backup ,但还没试过
|
4
shelken 82 天前 via iPhone
restic
|
6
chenjia404 82 天前 via Android 1
所有容器用 docker compose 启动,数据挂载子目录,迁移的时候直接打包移动,新环境直接 up 就行了。
|
7
Hopetree 82 天前
我的容器项目都是 docker-compose.yml 定义的,把需要备份的映射到本地,比如数据库和静态文件,备份的话首先是本地备份,然后定时任务把静态文件和数据库导出上传到七牛云做成云备份(定时上传,定时清理,只保留 7 天的)
|
8
hefish 81 天前
docker-compose 是正解。
docker 的设计是无状态的,可以随时的创建和注销。所以 docker 不存在需要备份的数据。 有了 docker-compose , 就能随时创建注销容器。 |
9
Jianrry 81 天前 via iPhone
docker compose + reclone + onedrive/telegarm
|
10
Jianrry 81 天前 via iPhone
reclone => rclone
|
12
maxus OP @shelken @chinni @Jianrry 大家为什么不用 Duplicati ?
https://nasdaddy.com/how-to-install-duplicati-on-your-nas/ |
13
daisyfloor 81 天前
@chenjia404 我和你的方法一模一样
|
14
daisyfloor 81 天前
@neroxps 从最开始部分容器服务的时候,就在 yml 配置文件里把卷改为相对路径子目录映射。也就是第一次添加某个 service 的时候,只处理一次。以后都不用处理了。
|
15
maxus OP @daisyfloor 有教程吗
|
16
laminux29 81 天前
@maxus
1.不用 Duplicati 是因为有 ZFS:实时压缩、实时去重、HDD + SSD 的性价比分层存储、带校验的 raid 。 2.docker 的用法不同,备份方式自然就不同。一般情况下,后端有 ZFS 自动去重,docker 的备份就变成了运维的几行脚本的事情,只不过要接入监控,有点麻烦而已。 |
18
chenjia404 81 天前
@maxus #15
services: kiwix-serve: command: '"*.zim"' image: ghcr.io/kiwix/kiwix-serve ports: - '15080:8080' volumes: - './kiwix-database:/data' container_name: kiwix 挂载到 yml 文件子目录下面的 ./kiwix-database |
19
daisyfloor 81 天前
@maxus 你搜搜 docker compose 吧。
|
20
tsvico 81 天前
Duplicati 有个不理想的点,Duplicati 备份的文件只能由 Duplicati 恢复,也就是新环境必须先安装 Duplicati
|
21
nyxsonsleep 80 天前
docker-compose 可以直接搬运。
如果一定要保留 docker 容器内的数据,可以用 docker 的命令 save 还是 export 来着,一个对应是镜像一个对应是容器,会生成压缩包。这个包可以搬运到其他设备载入。这样可能可以保留容器内的数据,细节没试过。 我只搬运过镜像。数据一般我都是保留在挂载的文件夹里,载入很简单。 |
22
libook 80 天前
Docker 数据分为如下几个部分:
1. 创建容器的配置。为了可以快速重新创建容器,容器最好用 docker-compose 创建,然后你只需要存 docker-compose 配置文件就行了。或者像 unRAID 之类的系统会有自己的 Docker 模板可以保留创建容器的配置。如果都不方便用可以尝试使用 runlike 之类的工具基于现有容器生成创建容器的指令并保存下来。 2. 容器镜像以及运行过程中产生的临时文件。由于当正确配置的情况下每次创建容器都会自动生成这部分文件,所以这部分数据属于是可以随时丢弃的,不需要备份。除非镜像是你自己制作的,那么你可以自己搭建 Docker registry 来保存你的镜像。 3. 容器产生的用户数据。这部分是最重要的,需要备份。通常使用 volume 机制,使用 Docker 的 volume 或者 bind 本地目录都是一样的,只是路径不一样而已,那么直接备份这些目录就可以了。 |
25
he1293024908 51 天前 via Android
搞个微力同步或者类似的,实时备份
|