我首先想到的是 Monit,我用它来监控其他进程。
在 Docker 世界中,还有其他方法可以做到这一点吗?
我希望监控 Docker 守护进程和特定容器。
答案1
对于容器来说,有一个--restart
标志run
命令的标志:https://docs.docker.com/engine/reference/commandline/run/#restart-policies-restart。
在更现代的 Linux 发行版(例如 CoreOS 和 Ubuntu)上,您可以使用 systemd 和 Upstart 管理守护进程。
例如,在 Ubuntu 上,Docker 的默认 Upstart 配置具有respawn
以下节 (http://upstart.ubuntu.com/cookbook/#respawn) 默认启用。
在 systemd 领域,CoreOS 有类似这样的方法启动 Docker 守护进程:https://github.com/coreos/coreos-overlay/blob/bed6ea27913a1d9595b62e05174ac4a841c7fabb/app-emulation/docker/files/docker.service。您可以自定义(https://coreos.com/os/docs/latest/customizing-docker.html)使用的 systemd 单元并使用选项Restart=
(http://www.freedesktop.org/software/systemd/man/systemd.service.html#Restart=)来实现类似的功能。
但是,这两个选项都不执行任何本机警报或消息传递。不过,您可能可以配置某种OnFailure=
由 Docker systemd 单元运行的“邮件程序”单元。但我认为这超出了 Docker 和 init 系统的范围。