求教一个比 docker compser 复杂一点,又比 k3s 简单的部署方案,主要痛点是更新 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fy
V2EX    问与答

求教一个比 docker compser 复杂一点,又比 k3s 简单的部署方案,主要痛点是更新

  • &bsp;
  •   fy 2023-09-25 17:22:12 +08:00 3024 次点击
    这是一个创建于 753 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,挂掉自动拉起应该能通过 restart: always 解决,或者设置一个次数限制
    容器更新有啥好方案吗。目前想法是构建好推送 S3 ,然后那边写个脚本轮询+重新 docker composer up -d ,是不是太粗糙了

    这类应用场景是 homelab 、内网部署、低性能服务器这些
    23 条回复    2023-09-27 08:08:02 +08:00
    lerry
        1
    lerry  
       2023-09-25 17:24:15 +08:00   1
    watchtower 可以自动更新镜像和容器
    sunny352787
        2
    sunny352787  
       2023-09-25 17:25:30 +08:00   1
    内网测试环境?让 CI 触发执行 docker-compose up -d --force-recreate --build XXX
    Trim21
        3
    Trim21  
       2023-09-25 17:29:18 +08:00   1
    docker compose 支持重启次数限制。

    https://docs.docker.com/compose/compose-file/compose-file-v3/#deploy

    楼上说的 watchtower 不支持比较新的 docker compose 。
    Trim21
        4
    Trim21  
       2023-09-25 17:31:43 +08:00
    我是直接在 crontab 里面定时 docker compose up -d --pull=always ...
    fy
        5
    fy  
    OP
       2023-09-25 17:34:12 +08:00
    @Trim21 是说 docker compose 不能太新 还是配置文件不能太新呢?

    应该是这个吧: https://containrrr.dev/watchtower/
    我配置文件是 3.7 应该能用?请教有没有坑之类呢
    fy
        6
    fy  
    OP
       202309-25 17:34:37 +08:00
    @Trim21 啊这 大力出奇迹!
    fy
        7
    fy  
    OP
       2023-09-25 17:36:15 +08:00
    那如果我不想建立 harbour ,有两个服务直接自己构建镜像推到 s3 ,这种情况 pull 就不行了吧?
    Trim21
        8
    Trim21  
       2023-09-25 17:43:58 +08:00   1
    @fy #5 的 docker compose 本身不能太新。配置文件的版本倒是次要的。

    好像是判断容器是否需要重启的逻辑跟 docker compose 启动容器的方式不太兼容。

    https://github.com/containrrr/watchtower/issues/1019
    zzl22100048
        9
    zzl22100048  
       2023-09-25 17:53:42 +08:00
    我怎么感觉 k3s 比 docker compose 简单多了,特别是涉及服务更新。我这 1c2g 跑 k3s 也没问题啊
    fy
        10
    fy  
    OP
       2023-09-25 17:53:48 +08:00
    @Trim21 啊这 那乍一看起来好像没有特别的好处,似乎只是能记一下日志,提供一点 hook 、metric 之类的。
    我搜了一下看到好像有 s3 bucket 当做 docker registry 的用法,那我也这样暴力 pull 大概也行。。。?
    如果上游没更新是不会重建和重启服务的吧
    fsdrw08
        11
    fsdrw08  
       2023-09-25 17:54:29 +08:00 via Android   1
    podman 支持通过 k8s 格式的描述文件进行部署,可以考虑用 podman + k8s 描述文件,在描述文件的 label 里面加上 io.containers.autoupdate: registry 配置自动更新
    Trim21
        12
    Trim21  
       2023-09-25 17:55:37 +08:00
    @fy #10 我几乎不用 build 参数,不太清除 build 相关参数的行为,但是如果上游 tag 对应的 sha 没变化的时候不会 pull 并重启。
    fy
        13
    fy  
    OP
      &bsp;2023-09-25 17:56:16 +08:00
    @zzl22100048 首先一个原因是我写了 compose 配置……其次是我看老贴说 k3s 直接吃 1g 内存,在性能较差机器上吃 30%的 cpu ,然后节点备份、自动扩容、网关那些功能我好像也不需要,所以想着简单点
    fy
        14
    fy  
    OP
       2023-09-25 18:05:30 +08:00
    @fsdrw08 请教下,这个新的容器工具有什么亮点吗。
    感觉过去两年,现在好像都在对 docker 喊打喊杀也不知道啥情况
    liuzhaowei55
        15
    liuzhaowei55  
       2023-09-25 18:22:40 +08:00 via Android
    docker swarm + portainer
    paranoiagu
        16
    paranoiagu  
       2023-09-25 18:27:07 +08:00 via Android
    单机跑,不涉及虚拟网络。docker compose 就很好。
    多机群集,需要虚拟网络,那么上 swarm 、k8s......
    cctv6
        17
    cctv6  
       2023-09-25 18:40:16 +08:00   1
    docker swarm ,就是比 docker-compose.yml 多一个 deploy ,可以配置滚动更新,还有 docker swarm 支持多节点。
    momocraft
        18
    momocraft  
       2023-09-25 18:56:29 +08:00   1
    docker-compose 可以远程更新的 https://www.docker.com/blog/how-to-deploy-on-remote-docker-hosts-with-docker-compose/
    具体原理是从当前机器通过 ssh 控制对面 host (DOCKER_HOST) 的 dockerd

    如果需要更好状态管理可以上简单的 terraform ,也能远程管理容器

    这两种做法都不需要另外跑程序
    4BVL25L90W260T9U
        19
    4BVL25L90W260T9U  
       2023-09-25 19:05:08 +08:00
    k3s 还不够简单么……另外,可以考虑一下 ansible ,完全可以替代 docker-compose
    kid1412621
        20
    kid1412621  
       2023-09-25 22:16:05 +08:00 via iPhone
    @cdlnls emmm 看来 swarm 还是并一无是处啊
    ETiV
        21
    ETiV  
       2023-09-25 23:04:28 +08:00 via iPhone
    自己单台就别整那么麻烦了

    docker 的 image 就当代码的运行时,你自己的代码 mount 进去跑
    dislazy2023
        22
    dislazy2023  
       2023-09-26 11:48:30 +08:00
    k3s 主要是占用磁盘比较多,需要起一些不必要的节点
    fsdrw08
        23
    fsdrw08  
       2023-09-27 08:08:02 +08:00 via Android
    @fy podman 对比 docker 的优势有 2 点
    1 ,对 rootless 支持很好,rootless 最大的好处是可以把容器所有依赖的组件都放在用户级别的目录下,例如 overlay 的文件层,volume ,启动容器对应的 systemd 服务,在 rootless 模式下这些都放在用户目录下,最终可以做到计算与存储分离,我现在的做法是创建一个专用于运行 podman 容器的用户,用户目录放在数据盘里,系统装好 podman 并配置了 linger ,开机挂载数据盘就能运行容器
    2 ,podman 支持加载 k8s 文件,支持 pod, deployment, statefulset, configmap, secret, PVC 等资源描述,可以通过 k8s 描述文件配置容器,这里的玩法就多了,例如通过 helm chart 部署
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2837 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 08:44 PVG 16:44 LAX 01:44 JFK 04:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86