CoreOS单元发布失败

时间:2016-06-01 19:15:04

标签: docker virtualization coreos

我尝试在CoreOS上使用chat.service单元文件启动服务但失败了:

// chat.service
[Unit]
Description=ChatApp

[Service]
ExecStartPre=-/usr/bin/docker kill simplechat1
ExecStartPre=-/usr/bin/docker rm simplechat1
ExecStartPre=-/usr/bin/docker pull jochasinga/socketio-chat
ExecStart=/usr/bin/docker run -p 3000:3000 --name simplechat1 jochasinga/socketio-chat

fleetctl list-units显示:

UNIT            MACHINE                     ACTIVE  SUB
chat.service    cfe13a03.../<virtual-ip>    failed  failed

但是,如果我将chat.service更改为:

// chat.service
[Service]
ExecStart=/usr/bin/docker run -p 3000:3000 <mydockerhubuser>/socketio-chat

运行得很好。 fleetctl list-units显示:

UNIT            MACHINE                     ACTIVE  SUB
chat.service    8df7b42d.../<virtual-ip>    active  running

修改 使用journalctl -u chat.service我得到了:

Jun 02 00:02:47 core-01 systemd[1]: Started chat.service.
Jun 02 00:02:47 core-01 systemd[1]: chat.service: Main process exited, code=exited, status=125/n/a
Jun 02 00:02:47 core-01 docker[8924]: docker: Error response from daemon: failed to create endpoint clever_tesla on network brid
Jun 02 00:02:47 core-01 systemd[1]: chat.service: Unit entered failed state.
Jun 02 00:02:47 core-01 systemd[1]: chat.service: Failed with result 'exit-code'.
Jun 02 00:02:58 core-01 systemd[1]: Stopped chat.service.
Jun 02 00:03:08 core-01 systemd[1]: Stopped chat.service.

我在第一个chat.service单元文件中做错了什么?任何指导都表示赞赏。

在Mac OS X上运行Vagrant version of CoreOS (stable)

2 个答案:

答案 0 :(得分:1)

您的ExecStartPre =命令似乎没有docker子命令。您的意思是使用pull吗?

阅读该单元的日志应该可以获得更多信息:journactl -u chat.service

答案 1 :(得分:0)

在使用@Rob建议和一些研究查看期刊后,似乎docker无法在端口3000上创建端点,因为在操作系统上,该端口上有一个正在运行的docker进程。

只需使用docker stop <processname>停止该过程,然后使用fleetctl start chat重新启动即可解决问题。