Sarke Asked: 2015-12-10 05:47:11 +0800 CST2015-12-10 05:47:11 +0800 CST 2015-12-10 05:47:11 +0800 CST Docker 中是否内置了用于监控和确保容器始终运行的功能? 772 我的第一个想法是 Monit,我用它来监控其他进程。 在 Docker 世界中是否有不同的方式来做到这一点? 我希望同时监控 Docker 守护进程和特定容器。 docker 1 个回答 Voted Best Answer Andy Shinn 2015-12-11T21:11:16+08:002015-12-11T21:11:16+08:00 具体到容器有命令的--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 系统的范围。
具体到容器有命令的
--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 系统的范围。