Service Docker和systemd-10秒后服务停止
当systemd启动Docker容器时,我很难让它保持正常运行。当我用Service Docker和systemd-10秒后服务停止,service,docker,systemd,Service,Docker,Systemd,当systemd启动Docker容器时,我很难让它保持正常运行。当我用sudo docker start containername手动启动它时,它不会出现问题,但当我用sudo systemctl start containername通过systemd启动它时,它会保持10秒钟,然后神秘地消失,在syslog中留下如下消息: Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="
sudo docker start containername
手动启动它时,它不会出现问题,但当我用sudo systemctl start containername
通过systemd启动它时,它会保持10秒钟,然后神秘地消失,在syslog中留下如下消息:
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="POST /v1.17/containers/containername/stop?t=10"
Mar 13 14:01:09 hostname docker[329]: time="2015-03-13T14:01:09Z" level="info" msg="+job stop(containername)"
我假设这是一个系统在扼杀这个过程,但我不知道为什么会发生。systemd单元文件(/etc/systemd/system/containername.service)非常简单,如下所示:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target
Docker在启动时启动良好,看起来它甚至启动了Docker容器,但无论是启动还是手动启动,它都会在10秒钟后退出。感谢您的帮助 解决方案:start命令似乎需要-a(attach)参数,如在systemd脚本中使用时所述。我假设这是因为默认情况下它会转移到后台,尽管systemd
expect守护进程似乎无法解决此问题
从docker start
手册页:
-a, --attach=true|false
Attach container's STDOUT and STDERR and forward all signals to the process. The default is false.
然后,整个systemd脚本变为:
[Unit]
Description=MyContainer
After=docker.service
Requires=docker.service
[Service]
ExecStart=/usr/bin/docker start -a containername
ExecStop=/usr/bin/docker stop containername
[Install]
WantedBy=multi-user.target
看看这个。在深入讨论这个问题之前,我离开了docker。谢谢,我去看看!我解决了这个问题,但这很容易阻止我在未来陷入困境。docker客户端不会使用-d
,而是完成并退出。容器仍在docker主机上运行,但systemd对此一无所知。