我在CoreOS beta(899.5.0)上运行了几个小项目
现在我第二次遇到这种情况,我有3个容器正在运行。一切都很好,花花公子。然后在没有查看该服务器上的我的网站几天后,我注意到当我尝试访问它们时页面已关闭。
当我在Digital Ocean上登录我的CoreOS机器并输入docker ps
时,我注意到我的所有容器都消失了!这太疯狂了。
我甚至为其中几个设置了systemd服务,这样如果它们因任何原因终止,它们应该再次运行。但他们没有。
我确实看到了这个,但是当我登录时问候我;我不确定它是否与它有关:
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上找到有关CoreOS的任何信息。拜托,欢迎任何帮助!
P.S。我的systemd配置如下所示:
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://gist.github.com/amcsi/95c8b0eb71de2f44c16b#file-journalctl-u-szeremi-service
答案 0 :(得分:2)
登录时报告的失败sshd单元是针对CoreOS上systemd socket-activated sshd的登录尝试失败的结果。它们与丢失的码头集装箱无关。
容器似乎正在消失"系统重新启动后执行自动更新。这是更新的默认设置,这些更新在测试版频道上以某种频率发生。您可以使用uptime
或类似命令检查系统重新启动的最近时间。
如果系统已重新启动且之后未重新启动容器,则可以将故障排除重点放在systemd单元文件和服务启动上。如果它没有重新启动,则容器日志(例如docker logs szeremi
)和服务的日志(例如,systemctl status -l szeremi.service
)可能是开始的地方。 freenode上的#coreos或coreos-users mailing list都会让人们随时准备提供帮助。
答案 1 :(得分:1)
CoreOS使用systemd
来定义主机上的进程。您举例说明的服务文件是service unit,它定义了如何运行docker容器。如果您通过直接登录CoreOS节点直接使用systemd,则必须enable
该服务才能使其在引导期间保持不变。
systemctl程序的enable
子命令将一个单元作为参数,并在systemd目标文件结构中创建一个符号链接。当systemd启动时,它会启动给定目标中的任何服务。这可确保在启动时启动给定服务。
systemctl enable szeremi.service # Creates a symlink within systemd
systemctl start szeremi.service # Starts the service => runs container