在sysd下实现docker服务的看门狗

我目前正在一个docker项目上工作,我需要实现看门狗。 当Docker容器最终作为Docker守护进程的subprocess运行时,它们与服务的cgroup不同,sd_notify事件不会被sysd处理。 为此,我偶然发现了https://github.com/coreos/sdnotify-proxy 。 通常要添加看门狗我会做,

[Unit] Description=My Little Daemon Documentation=man:mylittled(8) [Service] ExecStart=/usr/bin/mylittled WatchdogSec=30s Restart=on-failure StartLimitInterval=5min StartLimitBurst=4 StartLimitAction=reboot-force 

但是如何用sdnotify-proxy来实现。 我完全是新手。 任何帮助将不胜感激。

用法是:

 sdnotify-proxy /path/to/unix-sock cmd ... 

unix-sock用于将进程中的sd_notify命令代理到systemd。 为了和Docker一起使用,我们假设你的Docker镜像被称为mylittled。 你的服务文件将包含:

 [Service] ExecStart=/path/to/sdnotify-proxy /run/mylittled-sd.sock /usr/bin/docker run \ --volume=/run/mylittled-sd.sock:/run/mylittled-sd.sock \ --env=NOTIFY_SOCKET=/run/mylittled-sd.sock \ mylittled 

例子见https://github.com/coreos/coreos-overlay/blob/master/app-admin/flannel/files/flanneld.service

如果您使用的是CoreOS:当我们的映像中包含这个实用程序(运行flannel)时,它被放置在/ usr / libexec中,不会将其公开。 它可能在将来从图像中删除。