Docker 中是否具有内置功能,用于监控并确保容器始终运行?

Docker 中是否具有内置功能,用于监控并确保容器始终运行?

我首先想到的是 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 系统的范围。

相关内容