
我的 nas 上部署了很多 docker 服务,但其中有相当一部分是一些工具类的(使用频率低,可能几天或者几周用一次),我希望能在持续多长时间没有访问容器后,将容器销毁或者类似休眠,能释放资源就行。在下一次访问的时候,自动拉起容器(可以接受启动时间稍长一些)。有点类似于弹性扩缩容,但需要缩容到 0 。我现在是在飞牛上用 docker compose 部署的容器,暂时没看到什么好方法
1 ThirdFlame 2025 年 4 月 28 日 写个 crontab 定时销毁? |
2 Phant0m 2025 年 4 月 28 日 via iPhone docker rm 用完退出就销毁了。 自动拉起创建需要你自己写一个服务。 |
3 PeiXyJ 2025 年 4 月 28 日 弄一个 k3s , 要用的时候把副本改为 1 个,不用了就把副本改为 0 |
4 juzi214032 OP @PeiXyJ 那跟我手动启停也没啥区别了 |
5 juzi214032 OP @ThirdFlame 定时太粗暴了,万一那时候我正在用,而且也不知道啥时候应该把服务拉起来 |
6 juzi214032 OP @Phant0m 就是想看看有没有现成的方案 |
7 KagurazakaNyaa 2025 年 4 月 28 日 你是想要类似 lambda/worker 这种调用时自动创建容器,跑完自动销毁的方式吧? |
8 deepblue1 2025 年 4 月 28 日 这个需求应该是要自己实现的,目前已知没有这种 |
9 KagurazakaNyaa 2025 年 4 月 28 日 https://www.openfaas.com/ https://openwhisk.apache.org/ https://knative.dev/ 试试这几个,如果是你自己写的容器应该很容易改成基于事件触发的 如果是要基于请求启动容器,可以参考这篇文章 https://www.atlassian.com/blog/developer/docker-systemd-socket-activation |
10 hosiet 2025 年 4 月 28 日 via Android 你的说法让我想起了 systemd 的 socket activation 。核心思路应该是一样的。 |
11 yinmin 2025 年 4 月 28 日 via iPhone 以前用 python flask 写过一个 web 系统,点击功能后会检查容器状态,如果容器未启动就启动起来,然后等 3 秒再跳转到对应容器的 web 界面。 当时是 web 系统里的一个用户对应一个独立的容器,如果用户 logout/timeout 就销毁容器。 你可以让 gpt 或者 claude 写程序然后部署,实现类似功能。 |
12 yinmin 2025 年 4 月 28 日 via iPhone 如果 OP 有编程功底,可以让 gpt 协助你写一个程序,监听 tcp 端口,做 tcp 反向代理到后端容器,如果有新 tcp 连接去判断一下后端容器状态,按需启动。如果长时间没有 tcp 连接,就暂停后端容器。 |
13 worker201 2025 年 4 月 28 日 写个简单的 http 服务, 加上简单的鉴权, 比如 访问 https://example.com/service-a/on?token=xxx 就调用启动脚本 访问 https://example.com/service-a/off?token=xxx 就调用关停脚本 然后把地址保存成书签或者快捷方式放到桌面上 |
14 bkmi 2025 年 4 月 28 日 via Android 要说省资源没必要吧,我以前也总想着让硬盘休眠,折腾过几次后面没管了,都不关注了,跑了很多年 |
15 Yadomin 2025 年 4 月 28 日 |
16 lizhian 2025 年 4 月 28 日 我的建议,worker 吧,或者 claw cloud run 上面部署 |
17 LiaoMatt 2025 年 4 月 28 日 free memory is wasting memory 没有真的遇到因此产生的问题, 完全可以不用管的 |
18 Kumo31 2025 年 4 月 28 日 写个简单 proxy ,没调用就 kill -SIGSTOP <PID>,恢复就 kill -SIGCONT <PID> |
19 newaccount 2025 年 4 月 28 日 内存就是用来用的 内存不够的时候会把不用的置换掉 别整这些没用的,让系统自己管理就好 |
20 sofukwird 2025 年 4 月 28 日 via Android 如果你用 caddy 可以试试这个插件 https://github.com/shynome/caddy2-tmpdocker 在请求进来的时候把服务拉起来,但是基于 docker service 而不是 docker compose |
21 Immortal 2025 年 4 月 28 日 同意 17L 如果没有遇到资源紧张,没必要折腾这种事情. |
22 BernieDu 2025 年 4 月 28 日 portainer 的 stack ( compose ) 关闭的时候会销毁对应的容器,你看看 |
23 Soar360 2025 年 4 月 28 日 你是不是在找:IIS ? |
24 JoeJasper 2025 年 4 月 28 日 基于 aya-rs 框架来写 ebpf 程序内核级别监听网卡 tcp 的 syn 包来作弹性伸缩 |
25 THESDZ 2025 年 4 月 28 日 |
26 goodryb 2025 年 4 月 28 日 以前也想过能不能搞个类似的东西,后来想想 nas 用不用都开着机,干嘛还要折腾这个,不够了直接加内存 |
27 ala2008 2025 年 4 月 28 日 用到是时候再手动启动,也不是很麻烦,可以写一个脚本 |
28 KousukeSakurako 2025 年 4 月 29 日 docker pause 命令可以,也有 api ,可以写个脚本或者服务调用一下。然后配合 nginx 的 mirror 镜像流量来判断是否有请求 |