数字海洋液滴内的所有容器都会停止

我有一个数字海洋液滴,我运行4个容器,每个小型的python应用程序。

不时(一周或两周一次),所有的容器都停止工作。 这不是由它们内部的python应用程序引起的。

我做了一个systemd计时器,每隔30分钟执行一次bash脚本来检查容器是否正在运行,如果没有,启动它们。 计时器工作了几天,从来没有重新启动一个容器。

但是,有一天,我匆匆看到我的液滴,并看到容器已经停止 – 而且systemctl list-timers --all – 都告诉我,计时器从系统计时器中消失了! 这只是不存在了!

容器检查脚本正在写入日志,并且在容器停止的同时日志停止。

问题:

  1. 我怎么知道什么阻止了我的容器?

  2. 系统定时器如何消失?

  3. 我该如何解决?

我是唯一一个能够s手drople脚的人,所以别人也不能搞砸了。

当操作系统的新版本可用时,CoreOS群集将自行重启。 这意味着如果你手动在CoreOS机器上启动一个进程,在某个时候可能会消失。

好消息是,在CoreOS上运行进程的标准方式在机器执行时会恢复 – 也就是说,您可以使用systemd单元。 CoreOS描述了什么单元,以及如何在这里使用它们: https : //coreos.com/docs/launching-containers/launching/getting-started-with-systemd/

简而言之,您可以分三步创build自己的单位:

在/ etc / systemd / system中放置一个特殊格式的文件 – 最简单的可能是类似的

 [Unit] Description=MyApp After=docker.service Requires=docker.service [Service] ExecStart=/usr/bin/docker run mycontainer [Install] WantedBy=multi-user.target 

然后,您将需要设置您的系统,以便它将读取该文件(并运行您的容器)

 $ sudo systemctl enable foo.service $ sudo systemctl start hello.service 

链接中的文档有更多的细节(我强烈build议在继续之前先看一下它 – 这很简单!)