Docker和systemd – 服务在10秒后停止

在遇到由systemd启动的Docker容器时,我遇到了麻烦。 当我用sudo docker start containername手动启动它sudo docker start containername ,它保持没有问题,但是当它通过systemd sudo systemctl start containername ,它保持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杀死进程,但是我不知道为什么它可能会发生。 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秒后退出。 帮忙谢谢收到!

解决scheme:在systemd脚本中使用时,start命令似乎需要-a(attach)参数,如文档中所述。 我认为这是因为它默认分叉到后台,尽pipesystemd expect daemon function似乎不能解决问题。

docker-start页:

 -a, --attach=true|false Attach container's STDOUT and STDERR and forward all signals to the process. The default is false. 

整个系统脚本然后变成:

 [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