Docker容器在CoreOS中过了一段时间

我有几个在CoreOS beta(899.5.0)上运行的小项目,

这是我第二次发生,我有3个容器运行。 所有的罚款和花花公子。 然后几天后,我没有看到我的网站在服务器上,我注意到,当我试图访问他们的网页。

当我login到Digital Ocean上的CoreOS机器并键入docker ps ,我注意到我的所有容器都没有了! 疯了吧。

我甚至为他们中的一些人build立了一个systemd服务,所以如果他们因为什么原因终止了,他们应该再次运行。 但他们没有。

当我login时,我确实看到了这个问候; 我不确定它是否与它有关:

 Last login: Sun Jan 17 23:42:37 2016 from 81.106.109.70 CoreOS beta (899.5.0) Failed Units: 13 sshd@1509-178.62.0.199:22-219.219.114.120:14536.service sshd@1541-178.62.0.199:22-219.219.114.120:30158.service sshd@1581-178.62.0.199:22-219.219.114.120:17539.service sshd@1995-178.62.0.199:22-122.224.34.168:1397.service sshd@1996-178.62.0.199:22-122.224.34.168:3789.service sshd@2002-178.62.0.199:22-122.224.34.168:2983.service sshd@230-178.62.0.199:22-219.219.114.120:51826.service sshd@259-178.62.0.199:22-219.219.114.120:38882.service sshd@309-178.62.0.199:22-219.219.114.120:34654.service sshd@326-178.62.0.199:22-219.219.114.120:21256.service sshd@346-178.62.0.199:22-219.219.114.120:39645.service sshd@364-178.62.0.199:22-219.219.114.120:63277.service sshd@791-178.62.0.199:22-219.219.114.120:37294.service 

我无法在Google上find有关CoreOS发生的任何信息。 请任何帮助表示赞赏!

PS我的systemdconfiguration看起来像这样:

szeremi.service

 [Unit] Description=Run %p Requires=docker.service After=docker.service [Service] Restart=always ExecStartPre=-/usr/bin/docker kill %p ExecStartPre=-/usr/bin/docker rm -f %p ExecStart=/usr/bin/docker run -t --rm --name %p \ -p 80:8080 \ amcsi/szeremi ExecStop=/usr/bin/docker stop %p [Install] WantedBy=multi-user.target 

编辑:日志文件( journalctl -u szeremi.service )的最新页面是: https : journalctl -u szeremi.service

在login时报告的失败的sshd单元是在CoreOS上针对systemd套接字激活的sshdlogin尝试失败的结果。 他们没有关系到丢失的docker集装箱。

在系统重新引导以执行自动更新之后,容器似乎可能“消失”了。 这是更新的默认设置,这些更新在testing版频道上发生一些频率。 您可以检查最近系统重新启动uptime或类似的命令。

如果系统已经重新启动并且容器之后没有重新启动,则可以将故障排除集中在systemd单元文件和服务启动上。 如果它没有重新启动,容器日志(例如docker logs szeremi )和服务的日志(例如systemctl status -l szeremi.service )是可能的开始位置。 freenode上的#coreos或者coreos-users邮件列表都会有人帮忙。

CoreOS使用systemd来定义主机上的进程。 你已经举例说明的服务文件是一个服务单元 ,它定义了docker容器将如何运行。 如果您通过直接login到CoreOS节点来直接使用systemd,则必须enable该服务才能在启动时保留该服务。 systemctl程序的enable子命令以unit为参数,在systemd目标文件结构中创build一个符号链接。 当systemd启动时,启动给定目标中的任何服务。 这确保了给定的服务在启动时启动。

 systemctl enable szeremi.service # Creates a symlink within systemd systemctl start szeremi.service # Starts the service => runs container