I got an home server that is running docker for all my self hosted apps. But sometimes I accidentally trigger Earlyoom by remotely starting expensive docker builds, which kill docker.
I don’t have access to my server outside of my home network, so I can’t manually restart docker in those situations.
What would be the best way to restart it automatically? I don’t mind doing a full system restart if needed
You should be able to make docker exempt from early oom. Check it’s github for instructions.
But can it prevent killing only docker, and not the build/big containers processes?
I don’t know the best way but I would use cron and start docker every minute (if it’s not running).
I don’t know the best way
Apparently…
Don’t do this. Either don’t go OOM to begin with (somebody else told you how to limit container memory usage} and/or configure systemd to restart docker if it quits. I’m surprised systemd isn’t already.
Seems like the best solution. I’ll look into it
Seems like the best solution.
Over using a system tool designed to monitor and restart services that stop?
? I’m agreeing with you?
Sorry - was ambiguous and thought you were saying the “cron” thing sounded best.
It’s usually good to state why something is good or bad :)
It’s fairly obvious I feel.
You’re saying rather than use a system tool that does the exact thing that you want you should bodge together a cron job that accomplishes your goal but doesn’t actually do what you want.
Like say you want to stop the docker service for some reason?
systemctl stop docker
will do that. Then your cron job will restart it. That’s not the desired outcome. You want the service running IF the service SHOULD be running. Which is a different thing than “always running”. And its’ exactly what you get for free with systemd without any silly custom BS.
I’ll try that. I know that systemctl has a start-or-reload command, but is there any “start-or-ignore” commands? Or start flags?