有没有让 docker 容器休眠的方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
juzi214032
V2EX    Docker

有没有让 docker 容器休眠的方法

  •  
  •   juzi214032 165 天前 3489 次点击
    这是一个创建于 165 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的 nas 上部署了很多 docker 服务,但其中有相当一部分是一些工具类的(使用频率低,可能几天或者几周用一次),我希望能在持续多长时间没有访问容器后,将容器销毁或者类似休眠,能释放资源就行。在下一次访问的时候,自动拉起容器(可以接受启动时间稍长一些)。有点类似于弹性扩缩容,但需要缩容到 0 。我现在是在飞牛上用 docker compose 部署的容器,暂时没看到什么好方法

    28 条回复    2025-04-29 07:33:05 +08:00
    ThirdFlame
        1
    ThirdFlame  
       165 天前
    写个 crontab 定时销毁?
    Phant0m
        2
    Phant0m  
       165 天前 via iPhone
    docker rm 用完退出就销毁了。
    自动拉起创建需要你自己写一个服务。
    PeiXyJ
        3
    PeiXyJ  
       165 天前
    弄一个 k3s , 要用的时候把副本改为 1 个,不用了就把副本改为 0
    juzi214032
        4
    juzi214032  
    OP
       165 天前
    @PeiXyJ 那跟我手动启停也没啥区别了
    juzi214032
        5
    juzi214032  
    OP
       165 天前
    @ThirdFlame 定时太粗暴了,万一那时候我正在用,而且也不知道啥时候应该把服务拉起来
    juzi214032
        6
    juzi214032  
    OP
       165 天前
    @Phant0m 就是想看看有没有现成的方案
    KagurazakaNyaa
        7
    KagurazakaNyaa  
       165 天前
    你是想要类似 lambda/worker 这种调用时自动创建容器,跑完自动销毁的方式吧?
    deepblue1
        8
    deepblue1  
       165 天前
    这个需求应该是要自己实现的,目前已知没有这种
    KagurazakaNyaa
        9
    KagurazakaNyaa  
       165 天前   1
    https://www.openfaas.com/
    https://openwhisk.apache.org/
    https://knative.dev/
    试试这几个,如果是你自己写的容器应该很容易改成基于事件触发的
    如果是要基于请求启动容器,可以参考这篇文章
    https://www.atlassian.com/blog/developer/docker-systemd-socket-activation
    hosiet
        10
    hosiet  
       165 天前 via Android   2
    你的说法让我想起了 systemd 的 socket activation 。核心思路应该是一样的。
    yinmin
        11
    yinmin  
       165 天前 via iPhone
    以前用 python flask 写过一个 web 系统,点击功能后会检查容器状态,如果容器未启动就启动起来,然后等 3 秒再跳转到对应容器的 web 界面。

    当时是 web 系统里的一个用户对应一个独立的容器,如果用户 logout/timeout 就销毁容器。

    你可以让 gpt 或者 claude 写程序然后部署,实现类似功能。
    yinmin
        12
    yinmin  
       165 天前 via iPhone
    如果 OP 有编程功底,可以让 gpt 协助你写一个程序,监听 tcp 端口,做 tcp 反向代理到后端容器,如果有新 tcp 连接去判断一下后端容器状态,按需启动。如果长时间没有 tcp 连接,就暂停后端容器。
    worker201
        13
    worker201  
       165 天前
    写个简单的 http 服务, 加上简单的鉴权, 比如
    访问 https://example.com/service-a/on?token=xxx 就调用启动脚本
    访问 https://example.com/service-a/off?token=xxx 就调用关停脚本
    然后把地址保存成书签或者快捷方式放到桌面上
    bkmi
        14
    bkmi  
       165 天前 via Android
    要说省资源没必要吧,我以前也总想着让硬盘休眠,折腾过几次后面没管了,都不关注了,跑了很多年
    Yadomin
        15
    Yadomin  
       165 天前
    这种需求需要用 faas 平台吧,faas-netes, openfaas 这种。
    但是我觉得你跑这种平台本身的消耗可能都比那些容器更多了
    lizhian
        16
    lizhian  
       165 天前
    我的建议,worker 吧,或者 claw cloud run 上面部署
    LiaoMatt
        17
    LiaoMatt  
       165 天前   3
    free memory is wasting memory
    没有真的遇到因此产生的问题, 完全可以不用管的
    Kumo31
        18
    Kumo31  
       165 天前
    写个简单 proxy ,没调用就 kill -SIGSTOP <PID>,恢复就 kill -SIGCONT <PID>
    newaccount
        19
    newaccount  
       165 天前
    内存就是用来用的
    内存不够的时候会把不用的置换掉
    别整这些没用的,让系统自己管理就好
    sofukwird
        20
    sofukwird  
       165 天前 via Android
    如果你用 caddy 可以试试这个插件 https://github.com/shynome/caddy2-tmpdocker
    在请求进来的时候把服务拉起来,但是基于 docker service 而不是 docker compose
    Immortal
        21
    Immortal  
       165 天前
    同意 17L
    如果没有遇到资源紧张,没必要折腾这种事情.
    BernieDu
        22
    BernieDu  
       165 天前
    portainer 的 stack ( compose ) 关闭的时候会销毁对应的容器,你看看
    Soar360
        23
    Soar360  
       165 天前
    你是不是在找:IIS ?
    JoeJasper
        24
    JoeJasper  
       165 天前
    基于 aya-rs 框架来写 ebpf 程序内核级别监听网卡 tcp 的 syn 包来作弹性伸缩
    THESDZ
        25
    THESDZ  
       165 天前   1
    goodryb
        26
    goodryb  
       165 天前
    以前也想过能不能搞个类似的东西,后来想想 nas 用不用都开着机,干嘛还要折腾这个,不够了直接加内存
    ala2008
        27
    ala2008  
       165 天前
    用到是时候再手动启动,也不是很麻烦,可以写一个脚本
    KousukeSakurako
        28
    KousukeSakurako  
       164 天前
    docker pause 命令可以,也有 api ,可以写个脚本或者服务调用一下。然后配合 nginx 的 mirror 镜像流量来判断是否有请求
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     871 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 96ms UTC 21:15 PVG 05:15 LAX 14:15 JFK 17:15
    Do have faith in what you're doing.
    ubao 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