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

130 天前
 juzi214032

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

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

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

你可以让 gpt 或者 claude 写程序然后部署,实现类似功能。
yinmin
130 天前
如果 OP 有编程功底,可以让 gpt 协助你写一个程序,监听 tcp 端口,做 tcp 反向代理到后端容器,如果有新 tcp 连接去判断一下后端容器状态,按需启动。如果长时间没有 tcp 连接,就暂停后端容器。
worker201
130 天前
写个简单的 http 服务, 加上简单的鉴权, 比如
访问 https://example.com/service-a/on?token=xxx 就调用启动脚本
访问 https://example.com/service-a/off?token=xxx 就调用关停脚本
然后把地址保存成书签或者快捷方式放到桌面上
bkmi
130 天前
要说省资源没必要吧,我以前也总想着让硬盘休眠,折腾过几次后面没管了,都不关注了,跑了很多年
Yadomin
130 天前
这种需求需要用 faas 平台吧,faas-netes, openfaas 这种。
但是我觉得你跑这种平台本身的消耗可能都比那些容器更多了
lizhian
130 天前
我的建议,worker 吧,或者 claw cloud run 上面部署
LiaoMatt
130 天前
free memory is wasting memory
没有真的遇到因此产生的问题, 完全可以不用管的
Kumo31
130 天前
写个简单 proxy ,没调用就 kill -SIGSTOP <PID>,恢复就 kill -SIGCONT <PID>
newaccount
130 天前
内存就是用来用的
内存不够的时候会把不用的置换掉
别整这些没用的,让系统自己管理就好
sofukwird
130 天前
如果你用 caddy 可以试试这个插件 https://github.com/shynome/caddy2-tmpdocker
在请求进来的时候把服务拉起来,但是基于 docker service 而不是 docker compose

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1128566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX