在遵循systemd 指南时,我遇到了此示例配置的问题:
[Unit]
Description=MyApp
After=docker.service
Requires=docker.service
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
如果我在系统运行时运行“systemctl start hello”,docker将启动,但如果我启用“hello.service”以通过systemd启动并重新启动机器,我会收到此错误:
-- Reboot --
Mar 15 01:17:44 general systemd[1]: Starting MyApp...
Mar 15 01:17:47 general docker[510]: Error response from daemon: No such container: busybox1
Mar 15 01:17:47 general docker[510]: time="2015-03-15T01:17:47Z" level="fatal" msg="Error: failed to kill one or more containers"
Mar 15 01:17:47 general docker[637]: Error response from daemon: No such container: busybox1
Mar 15 01:17:47 general docker[637]: time="2015-03-15T01:17:47Z" level="fatal" msg="Error: failed to remove one or more containers"
Mar 15 01:17:47 general systemd[1]: hello.service: control process exited, code=exited status=1
Mar 15 01:17:47 general systemd[1]: Failed to start MyApp.
Mar 15 01:17:47 general systemd[1]: Unit hello.service entered failed state.
Mar 15 01:17:47 general systemd[1]: hello.service failed.
Mar 15 01:17:47 general docker[673]: Pulling repository busybox
Mar 15 01:17:47 general docker[673]: time="2015-03-15T01:17:47Z" level="fatal" msg="Get https://index.docker.io/v1/repositories/library/busybox/images: dial tcp: lookup index.docker.io: connection refused"
Run Code Online (Sandbox Code Playgroud)
任何线索我做错了什么?
如果你想在启动时运行它,你应该依赖于该network-online.target服务。在运行docker pull命令之前,您需要确保网络已启动。有关更多信息,请参阅systemd 文档中的“在网络启动后运行服务”。
以下对我有用:
[Unit]
Description=MyApp
Requires=docker.service network-online.target
After=docker.service network-online.target
[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill busybox1
ExecStartPre=-/usr/bin/docker rm busybox1
ExecStartPre=/usr/bin/docker pull busybox
ExecStart=/usr/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do echo Hello World; sleep 1; done"
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1394 次 |
| 最近记录: |