Service Docker和systemd-10秒后服务停止

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="

当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="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对此一无所知。