CoreOS 单元启动失败
CoreOS Unit Failed on Launched
我尝试在 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
单元文件中做错了什么?任何指导表示赞赏。
运行 Vagrant version of CoreOS (stable) Mac OS X.
您的 ExecStartPre= 命令中似乎没有 docker 子命令。您是要使用 pull
吗?
阅读本单元的期刊应该可以获得更多信息:journactl -u chat.service
在使用@Rob 建议和一些研究查看日志后,docker 似乎无法在端口 3000 上创建端点,因为在 OS 上有一个 运行 docker 该端口上的进程。
只需使用 docker stop <processname>
停止进程并使用 fleetctl start chat
重新启动即可解决问题。
我尝试在 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
单元文件中做错了什么?任何指导表示赞赏。
运行 Vagrant version of CoreOS (stable) Mac OS X.
您的 ExecStartPre= 命令中似乎没有 docker 子命令。您是要使用 pull
吗?
阅读本单元的期刊应该可以获得更多信息:journactl -u chat.service
在使用@Rob 建议和一些研究查看日志后,docker 似乎无法在端口 3000 上创建端点,因为在 OS 上有一个 运行 docker 该端口上的进程。
只需使用 docker stop <processname>
停止进程并使用 fleetctl start chat
重新启动即可解决问题。