首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头和系统-10秒后停止服务

码头和系统-10秒后停止服务
EN

Stack Overflow用户
提问于 2015-03-13 14:09:15
回答 1查看 3.2K关注 0票数 4

当系统启动时,我很难找到一个码头集装箱。当我用sudo docker start containername手动启动它时,它不会出现故障,但是当它通过使用sudo systemctl start containername的systemd启动时,它会持续10秒,然后神秘地死去,在syslog中留下消息,如下所示:

代码语言:javascript
复制
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/tainername.service)非常简单,如下所示:

代码语言:javascript
复制
[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在引导时启动很好,看起来它甚至启动了对接容器,但是不管是在引导还是手动启动时,它都会在10秒后退出。感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-14 16:55:58

解决方案:当在systemd脚本中使用时,start命令似乎需要-a (附加)参数,正如所描述的在文件中。我认为这是因为默认情况下它会分叉到后台,尽管systemd expect daemon 功能似乎没有修复这个问题。

来自docker-start手册:

代码语言:javascript
复制
-a, --attach=true|false
   Attach container's STDOUT and STDERR and forward all signals to the process. The default is false.

然后整个systemd脚本变成:

代码语言:javascript
复制
[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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29034381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档