V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。
maxus
V2EX  ›  NAS

你们是用什么工具备份 docker 数据的

  •  
  •   maxus · 23 天前 · 2946 次点击
    按照网上的教程,把整个 docker 目录迁移到另一个硬盘,修改相应工作路径,重新启动后,里面一个容器都没有。
    不知道什么原因
    24 条回复    2024-08-27 14:20:20 +08:00
    daisyfloor
        1
    daisyfloor  
       23 天前   ❤️ 1
    所有数据都在 docker-compose.yml 文件所在目录 project 及其子目录里。

    自动定期备份 project 目录即可。

    yml 配置文件里所有容器的数据和配置目录映射都采用相对路径,映射到 project 里对应 service 的子目录里。(不适用卷)

    如果当前机器遇到问题。或者换机器,换盘。只需要把备份的 project 目录解压过去,然后 docker compose up -d

    即可。
    neroxps
        2
    neroxps  
       23 天前   ❤️ 1
    @daisyfloor volume 还是得处理下,有些容器不小心没加上 volume 就 GG
    liununu
        3
    liununu  
       23 天前 via iPhone   ❤️ 1
    之前 star 过一个工具 https://github.com/offen/docker-volume-backup ,但还没试过
    shelken
        4
    shelken  
       23 天前 via iPhone
    restic
    chinni
        5
    chinni  
       22 天前
    @shelken 我也用这个 但是 rustic .功能更多
    chenjia404
        6
    chenjia404  
       22 天前 via Android   ❤️ 1
    所有容器用 docker compose 启动,数据挂载子目录,迁移的时候直接打包移动,新环境直接 up 就行了。
    Hopetree
        7
    Hopetree  
       22 天前
    我的容器项目都是 docker-compose.yml 定义的,把需要备份的映射到本地,比如数据库和静态文件,备份的话首先是本地备份,然后定时任务把静态文件和数据库导出上传到七牛云做成云备份(定时上传,定时清理,只保留 7 天的)
    hefish
        8
    hefish  
       22 天前
    docker-compose 是正解。
    docker 的设计是无状态的,可以随时的创建和注销。所以 docker 不存在需要备份的数据。 有了 docker-compose , 就能随时创建注销容器。
    Jianrry
        9
    Jianrry  
       22 天前 via iPhone
    docker compose + reclone + onedrive/telegarm
    Jianrry
        10
    Jianrry  
       22 天前 via iPhone
    reclone => rclone
    shelken
        11
    shelken  
       22 天前 via iPhone
    @chinni 谢谢,看起来好像有声明式配置。在定时备份方面支持怎么样?能兼容原先的 restic repo 吗?
    maxus
        12
    maxus  
    OP
       22 天前
    daisyfloor
        13
    daisyfloor  
       22 天前
    @chenjia404 我和你的方法一模一样
    daisyfloor
        14
    daisyfloor  
       22 天前
    @neroxps 从最开始部分容器服务的时候,就在 yml 配置文件里把卷改为相对路径子目录映射。也就是第一次添加某个 service 的时候,只处理一次。以后都不用处理了。
    maxus
        15
    maxus  
    OP
       22 天前
    @daisyfloor 有教程吗
    laminux29
        16
    laminux29  
       22 天前
    @maxus
    1.不用 Duplicati 是因为有 ZFS:实时压缩、实时去重、HDD + SSD 的性价比分层存储、带校验的 raid 。

    2.docker 的用法不同,备份方式自然就不同。一般情况下,后端有 ZFS 自动去重,docker 的备份就变成了运维的几行脚本的事情,只不过要接入监控,有点麻烦而已。
    maxus
        17
    maxus  
    OP
       22 天前
    @laminux29
    那我用 docker 部署 Duplicati
    chenjia404
        18
    chenjia404  
       22 天前
    @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
    daisyfloor
        19
    daisyfloor  
       21 天前
    @maxus 你搜搜 docker compose 吧。
    tsvico
        20
    tsvico  
       21 天前
    Duplicati 有个不理想的点,Duplicati 备份的文件只能由 Duplicati 恢复,也就是新环境必须先安装 Duplicati
    nyxsonsleep
        21
    nyxsonsleep  
       21 天前
    docker-compose 可以直接搬运。
    如果一定要保留 docker 容器内的数据,可以用 docker 的命令 save 还是 export 来着,一个对应是镜像一个对应是容器,会生成压缩包。这个包可以搬运到其他设备载入。这样可能可以保留容器内的数据,细节没试过。
    我只搬运过镜像。数据一般我都是保留在挂载的文件夹里,载入很简单。
    libook
        22
    libook  
       21 天前
    Docker 数据分为如下几个部分:
    1. 创建容器的配置。为了可以快速重新创建容器,容器最好用 docker-compose 创建,然后你只需要存 docker-compose 配置文件就行了。或者像 unRAID 之类的系统会有自己的 Docker 模板可以保留创建容器的配置。如果都不方便用可以尝试使用 runlike 之类的工具基于现有容器生成创建容器的指令并保存下来。
    2. 容器镜像以及运行过程中产生的临时文件。由于当正确配置的情况下每次创建容器都会自动生成这部分文件,所以这部分数据属于是可以随时丢弃的,不需要备份。除非镜像是你自己制作的,那么你可以自己搭建 Docker registry 来保存你的镜像。
    3. 容器产生的用户数据。这部分是最重要的,需要备份。通常使用 volume 机制,使用 Docker 的 volume 或者 bind 本地目录都是一样的,只是路径不一样而已,那么直接备份这些目录就可以了。
    shelken
        23
    shelken  
       21 天前 via iPhone
    @maxus 追求声明式配置和自动化备份,就不依赖图形化界面,想象一下,当你有 10 个设备时,使用一个配置文件进行分发会大大提高效率
    chinni
        24
    chinni  
       20 天前
    @shelken 能 , crontab 就可以定时了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   941 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:50 · PVG 03:50 · LAX 12:50 · JFK 15:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.